DecimalPipe transform()
メソッドを使用するカスタムパイプを作成しました。以下のようなので、私は、機能モジュールの一つの内側にこのパイプを使用していると私は(MyCustomPipeがDecimalPipeを使用しているため)providers: []
にそれらのパイプの両方を追加する必要があります。角度 '予期しないパイプをモジュールでインポートしました'エラー
index.ts:
@NgModule({
imports: [
MaterialModule,
SharedModule
],
declarations: [
...
],
providers: [
DecimalPipe,
MyCustomPipe
...
を私の目標は、しかし、ですこのようにDecimalPipeをフィーチャモジュールに追加する必要がなく、MyCustomPipeとDecimalPipeの間に依存関係があるため、MyCustomPipeを消費している人は誰でもMyCustomPipeをSharedModuleからインポートすることができます。私はSharedModuleパターンに従うとSharedModuleからエクスポートDecimalPipeを持ってしようとすることによってこれを解決しようとした(私はMyCustomPipeでやったように)、そのような:
shared.module.ts:
...import { DecimalPipe } from '@angular/common';
...export * from '../pipes/index';
@NgModule({
imports: [
CommonModule,
FormsModule,
HttpModule,
DecimalPipe
],
declarations: [
LoginComponent,
ErrorComponent,
MyCustomPipe,
],
exports: [
CommonModule,
HttpModule,
LoginComponent,
ErrorComponent,
DecimalPipe,
MyCustomPipe
]
})
しかし、私はこれをしようとするとエラー"Error: (SystemJS) Unexpected pipe 'DecimalPipe' imported by the module 'SharedModule'. Please add a @NgModule annotation."
を取得します。今、私はDecimalPipeをSharedModuleのdeclarations: []
に追加できますが、DecimalPipeがSharedModuleとCommonModuleの両方で宣言されていることを警告するエラーが表示されます。私はこれがドキュメントに記載されているSharedModuleパターンの理解が不足していると思います。私は100%ではありません。たとえこれが正しいアプローチであっても、フィーチャモジュールを持つAngleパイプを組み込んだカスタムパイプを共有しようとしたことはありません。
コースe!どのように私はそれを見ていない可能性があります。 MyCustomPipeはDecimalPipeのインスタンスを作成する必要があり、これがコンストラクタに配置される理由です。そのため、これらの変更はSharedModuleにあるNgModule配列です。私の例のように、SharedModuleはMyCustomPipeを宣言し、エクスポートする必要がありますか? – MadCatm2
はい、それがアイデアです。 – amal