Angular`useFactory`服务设置抛出未捕获的错误:无法解析组件的所有参数

时间:2019-08-20 20:37:52

标签: angular angular-services angular-providers

很长一段时间以来第一次使用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参数的要点是使服务知道调用了哪个组件,以便根据该源提供略有不同的结果。 (即不同的过滤等)

我将在现场编辑中使用完整代码来更新此问题,以便可以使用完整内容

1 个答案:

答案 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]},
  ]
})