StackBlitz for this problem
我想创建一些常量管道并将它们一起导入app.module.ts
。
当我使用像export const pipes = [MinValue, MaxValue]
这样的语法时,它可以工作,但当我使用export const pipes = _pipes
时,它就不工作了,它说No pipe found with name 'MIN_VALUE'
。
问题是,我想把同一个常量的逻辑放在一起,如果我使用第一种方法,当文件中有很多常量时,我需要在添加或删除常量时跳来跳去。那么,是否有可能使第二种方法起作用?constant.ts
:
import { Pipe, PipeTransform } from '@angular/core';
const _pipes = [];
@Pipe({ name: 'MIN_VALUE' })
export class MinValue implements PipeTransform {
transform = (v?: any) => 1;
}
_pipes.push(MinValue);
@Pipe({ name: 'MAX_VALUE' })
export class MaxValue implements PipeTransform {
transform = (v?: any) => 10;
}
_pipes.push(MaxValue);
export const pipes = _pipes; // <- this does not work
// export const pipes = [MinValue, MaxValue]; // <- this works
字符串app.module.ts
:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ReactiveFormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { pipes } from './constant';
@NgModule({
imports: [BrowserModule, ReactiveFormsModule],
declarations: [AppComponent, ...pipes], // <- spread syntax here
bootstrap: [AppComponent],
})
export class AppModule {}
型
1条答案
按热度按时间oknrviil1#
你可以通过创建一个共享模块来全局声明一个管道,并在不同的模块中使用它。共享模块是一个声明和导出公共部分的模块,使它们可用于任何其他模块。下面是如何创建一个共享模块:
字符串
然后,您可以将SharedModule模块导入到将要使用管道的模块中,方法是将其添加到imports数组中:
型
这样,您就可以在导入SharedModule模块的任何模块中使用MinValue管道,而无需再次声明它。