アプリケーションに遅延ロードを実装しました。私のサービスの1つはDecimalPipeを含める必要があります。
サービス - >共有モジュール - >アプリモジュール
これは私の構造です。 App.Module.tsで "CommonModule"がすでに含まれていて、私のサービスにも小さなパイプが必要です。
Type DecimalPipeは、CommonModuleとSharedModuleの2つのモジュールの宣言の一部です。 CommonModuleとSharedModuleをインポートする上位モジュールへの移動デカマイプを検討してください。また、DecimalPipeをエクスポートして含む新しいNGModuleを作成することもできます。次に、そのNGModuleをCommonModuleとSharedModuleにインポートすることもできます。
そのため、すでにCommonsモジュールの一部であるため、なぜCommonsモジュールから10進Pipeを取りません。 ?宣言されていない場合は、以下のエラーが表示されます。
NullinjectorError:DecimalPipeのプロバイダなし!
このエラーを処理する方法を教えてください。前もって感謝します!
インポートした共有NGModuleを作成したい場合代わりにCommonModule
のすべての機能モジュールの_の_。あなたはこのようなことをするでしょう:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
...
@NgModule({
imports: [CommonModule],
declarations: [...],
exports: [CommonModule, ...]
})
export class SharedModule {}
_
その後、すべての機能モジュールで、CommonModule
をインポートし、代わりにSharedModule
をインポートします。これにより、カスタムコードはCommonModule
内のすべてのパイプとコンポーネントにアクセスする必要があります。
AngularのNGModulesですでに宣言されているため、angularの内蔵パイプやコンポーネントはあなたのNGModulesの宣言に含まれるべきではありません。
あなたがしているのは、コンポーネント内でDecimalPipeを使用しようとしている場合は、サービスを提供するNGModuleでCommonModuleをインポートしてください。