2016-10-24 1 views
3

Ich möchte eine Pipe in allen App zur Verfügung stellen. Gemäß dem, was ich in den Angular-Dokumenten und im Internet gelesen habe, wenn ich eine Pipe in die Root-Modul-Deklaratio- nen einnehme, macht es die Pipe in allen Anwendungen verfügbar. Ich habe dieses AppModule Code:Global Pipe in Angular 2

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

Und dies für das Kind Modul:

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

export class NavbarModule { } 

Das Rohr:

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

export class TranslatePipe implements PipeTransform { 
    constructor() { } 

    transform(value: string, args: any[]): any { 
     return value + " translated"; 
    } 
} 

Aber WHE ich das Rohr auf der NavbarMenuComponent Vorlage nennen thows es diese Fehler:

'The pipe "translate" could not be found'

Wenn ich die Pipe in den untergeordneten Moduldeklarationen deklariere, funktioniert es, aber ich muss die Pipe global machen. Wenn die App also erwachsen ist, muss ich diese Pipe (und andere globale Pipes) nicht in allen Modulen deklarieren. Gibt es eine Möglichkeit, die Pipe global zu machen?

Antwort

5

Sie benötigen das Modul hinzufügen, die das Rohr enthält (und hat es in declarations: [] und exports: []) zu imports: [...] Ihrer aktuellen Modul, dann ist es im aktuellen Modul zur Verfügung.

@NgModule({ 
    imports:  [ CommonModule], 
    declarations: [ TranslatePipe], 
    exports:  [ TranslatePipe], 
}) 
export class TranslateModule { } 
@NgModule({ 
    imports:  [ CommonModule, TranslateModule], 
    declarations: [ NavbarMenuComponent] 
}) 
export class NavbarModule { } 
+1

ich updted den Code mit Ihrer Antwort, fügte ich das Rohr auf die Ausfuhren des AppModule und importiert dann die AppModule auf die "NavBarModule Einfuhren, aber jetzt wirft es einen weiteren Fehler:‚Usepected Wert "undefined" wird vom Modul "NavbarModule" importiert. – Miguel

+0

Es wäre besser, ein gemeinsames Feature-Modul für die Pipe zu erstellen, anstatt 'AppModule' in anderen Modulen zu importieren. Das Modul (in Ihrem Fall 'AppModule' muss' TranslatePipe' exportieren. –

+0

Ich habe meine Antwort aktualisiert. –

Verwandte Themen