4

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

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

このモジュールは、パイプを使用するテンプレートを持つ を宣言BrowseModuleします。I import myへのアクセスを提供するには、 .ProjectCardComponentcmgTitleizeTitleizePipeSharedModule

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

export class BrowseModule { }

は、次のSharedModuleものをインポートしPipesModuleます。

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

export class SharedModule { }

PipesModuleを宣言してエクスポートしTitelizePipeます:

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

export class PipesModule { }

最後に、健全性チェックのために、TitleizePipe を次に示します。

@Pipe({
  name: 'cmgTitleize'
})

export class TitleizePipe implements PipeTransform {
  ...
}
4

2 に答える 2

5

もエクスポートする必要があったようPipesModuleですSharedModule

于 2016-09-02T01:19:34.863 に答える
3

共有モジュールで静的な "forRoot()" を使用している場合でも、パイプまたはその他の必要なモジュールをエクスポートする必要があります。

@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 { }
于 2016-10-21T09:33:49.287 に答える