Angular 2中的全局管道

Mig*_*uel 5 typescript angular

我想在所有应用程序中提供管道.根据我在Angular文档和互联网中读到的内容,如果我在根模块声明中声明了一个管道,那么它就是所有应用程序中的管道.我有这个AppModule代码:

@NgModule({
  imports:      [ BrowserModule, NavbarModule],
  declarations: [ AppComponent, TranslatePipe],
  bootstrap:    [ AppComponent],
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

这对于子模块:

@NgModule({
  imports:      [ CommonModule],
  declarations: [ NavbarMenuComponent],//<---Call the pipe in this component
})

export class NavbarModule { }
Run Code Online (Sandbox Code Playgroud)

管道:

@Pipe({
    name: 'translate',
    pure: false
})

export class TranslatePipe implements PipeTransform {
    constructor() { }

    transform(value: string, args: any[]): any {
        return value + " translated";
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在NavbarMenuComponent模板上调用管道时,它会抛出此错误:

"管道"翻译"无法找到"

如果我在子模块声明中声明管道它可以工作,但我需要使管道全局,所以当应用程序成长时,我不需要在所有模块中声明这个管道(和其他全局管道).有没有办法让管道全球化?

Gün*_*uer 9

您需要将添加模块包含管(并有它declarations: []exports: []),以imports: [...]当前的模块,那么它在当前模块中的可用.

@NgModule({
  imports:      [ CommonModule],
  declarations: [ TranslatePipe],
  exports:      [ TranslatePipe],
})
export class TranslateModule { }
Run Code Online (Sandbox Code Playgroud)
@NgModule({
  imports:      [ CommonModule, TranslateModule],
  declarations: [ NavbarMenuComponent]
})
export class NavbarModule { }
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,您的评论很抱歉,由于对Angular2不了解,这是一个错误的问题。很抱歉给您带来麻烦,感谢您的宝贵时间。 (2认同)