Angular `useFactory`サービスセットアップがキャッチされないエラーをスローする:コンポーネントのすべてのパラメーターを解決できません

クリス・ラザフォード

久しぶりにAngularを使って作業していて、とても新しいことに挑戦しています。私にはサービスがあり、その作成方法に基づいて少し異なる動作をしたいと思っuseFactoryています。それが正しい方法だと思いましたが、適切に設定したかどうかはわかりません。

したがって、次のようなモジュールでサービスを定義して提供します。

@NgModule({
  declarations: [AdminBatchesComponent],
  imports: [
    CommonModule
  ],
  exports: [AdminBatchesComponent],
  providers: [
    {provide: BATCH_SERVICE_PROVIDER, useFactory: batchServiceProvider, deps: ['admin']},
  ]
})

インジェクショントークンは次のように定義されています。

export const BATCH_SERVICE_PROVIDER = new InjectionToken<BatchService>('BATCH_SERVICE_PROVIDER');

そして、このように定義されたファクトリ:

export function batchServiceProvider(source: string){
    return new BatchService(source);
}

コンストラクターは次のように設定されます。

export function batchServiceProvider(source: string){
    return new BatchService(source);
}

sourceパラメータの主なポイントは、そのソースに基づいてわずかに異なる結果を提供するために、どのコンポーネントがそれを呼び出したかをサービスに認識させることです。(つまり、異なるフィルタリングなど)

この質問をライブ編集の完全なコードで更新して、完全なものを利用できるようにします。

クリス・ラザフォード

最終的解決:

@NgModule({
  declarations: [AdminBatchesComponent],
  imports: [
    CommonModule
  ],
  exports: [AdminBatchesComponent],
  providers: [
    {provide: ADMIN_BATCH, useValue: 'admin'}, //have a provider for the parameter in the service.
    {provide: BATCH_SERVICE_PROVIDER, useFactory: batchServiceProvider, deps: [ADMIN_BATCH]},
  ]
})

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ