web-dev-qa-db-ja.com

NullinjectorError:DecimalPipeのプロバイダなし

アプリケーションに遅延ロードを実装しました。私のサービスの1つはDecimalPipeを含める必要があります。

サービス - >共有モジュール - >アプリモジュール

これは私の構造です。 App.Module.tsで "CommonModule"がすでに含まれていて、私のサービスにも小さなパイプが必要です。

  1. 私の共有モジュールの「10進Pipe」を含めると、以下のエラーが発生します。

Type DecimalPipeは、CommonModuleとSharedModuleの2つのモジュールの宣言の一部です。 CommonModuleとSharedModuleをインポートする上位モジュールへの移動デカマイプを検討してください。また、DecimalPipeをエクスポートして含む新しいNGModuleを作成することもできます。次に、そのNGModuleをCommonModuleとSharedModuleにインポートすることもできます。

そのため、すでにCommonsモジュールの一部であるため、なぜCommonsモジュールから10進Pipeを取りません。 ?宣言されていない場合は、以下のエラーが表示されます。

NullinjectorError:DecimalPipeのプロバイダなし!

このエラーを処理する方法を教えてください。前もって感謝します!

7
Ravi

インポートした共有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をインポートしてください。

0
nephiw