久しぶりに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]
コメントを追加