很长一段时间以来第一次使用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
参数的要点是使服务知道调用了哪个组件,以便根据该源提供略有不同的结果。 (即不同的过滤等)
我将在现场编辑中使用完整代码来更新此问题,以便可以使用完整内容
答案 0 :(得分:0)
最终解决方案:
@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]},
]
})