2016-09-02 8 views
4

モジュール構造を使用するようにアプリケーションを更新しています。共有モジュールにパイプコンポーネントを追加しようとすると、奇妙な問題が発生しました。私が読んだことから、私はすべてが正しく設定されているので、私は少し何かを欠いている必要があります。角2 RC.5共有モジュールがパイプを見つけることができません

エラー:Unhandled Promise rejection: Template parse errors: The pipe 'cmgTitleize' could not be found

私はBrowseModuleを持って、このモジュールはcmgTitleizeパイプを使用するテンプレートを持っているProjectCardComponentを宣言します。 TitleizePipeへのアクセスを提供するために私はSharedModuleをインポートします。

@NgModule({ 
    declarations: [ 
    ..., 
    ProjectCardComponent 
    ], 
    imports: [ 
    ..., 
    SharedModule 
    ], 
    providers: [ 
    ... 
    ] 
}) 

export class BrowseModule { } 

SharedModulePipesModuleをインポート:

@NgModule({ 
    declarations: [ 
    ... 
    ], 
    exports: [ 
    ... 
    ], 
    imports: [ 
    ..., 
    PipesModule 
    ] 
}) 

export class SharedModule { } 

PipesModuleTitelizePipeを宣言し、エクスポートします。

@NgModule({ 
    declarations: [ 
    ... 
    TitleizePipe 
    ], 
    exports: [ 
    ... 
    TitleizePipe 
    ] 
}) 

export class PipesModule { } 

最後には、健全性チェックのために相続人TitleizePipe:

@Pipe({ 
    name: 'cmgTitleize' 
}) 

export class TitleizePipe implements PipeTransform { 
    ... 
} 

答えて

3

私はまた、あなたが共有モジュールで静的「forRootを()」を使用している場合、あなたはまだパイプや他の必要なモジュールをエクスポートする必要がSharedModule

2

PipesModuleをエクスポートするために必要な次のようになります。

@NgModule({ 
    exports: [ 
     MyPipesModule     //<---------------- HERE 
    ] 
}) 
export class SharedModule { 
    static forRoot(): ModuleWithProviders { 
     return { 
      ngModule: SharedModule, 
      providers: [ 
       MySingletonServices 
      ] 
     }; 
    } 
} 

そして、あなたは自分のメインのアプリモジュールでそれをインポートします。

@NgModule({ 
    declarations: [ 
     AppComponent 
    ], 
    imports: [ 
     SharedModule.forRoot()  // <------------ 
    ], 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 
+0

は角4+のようにまだ適用 '.forRoot()'メソッドのですか?私はそれが非難されたと聞いた? – Moshe

+0

@Moshe https://angular.io/api?query=forroot – Baruch

関連する問題