Angular 角度“useFactory”服务设置抛出未捕获错误:Can';t解析组件的所有参数

Angular 角度“useFactory”服务设置抛出未捕获错误:Can';t解析组件的所有参数,angular,angular-services,angular-providers,Angular,Angular Services,Angular Providers,很长一段时间以来第一次与angular合作,我正在尝试一些非常新的东西。我有一个服务,我想根据它的创建方式表现得有点不同,我认为useFactory将是正确的方式,但我不确定我是否正确设置了它 因此,我在模块中定义并提供了如下服务: @NgModule({ declarations: [AdminBatchesComponent], imports: [ CommonModule ], exports: [AdminBatchesComponent], provide

很长一段时间以来第一次与angular合作,我正在尝试一些非常新的东西。我有一个服务,我想根据它的创建方式表现得有点不同,我认为
useFactory
将是正确的方式,但我不确定我是否正确设置了它

因此,我在模块中定义并提供了如下服务:

@NgModule({
  declarations: [AdminBatchesComponent],
  imports: [
    CommonModule
  ],
  exports: [AdminBatchesComponent],
  providers: [
    {provide: BATCH_SERVICE_PROVIDER, useFactory: batchServiceProvider, deps: ['admin']},
  ]
})
export function batchServiceProvider(source: string){
    return new BatchService(source);
}
我有如下定义的注入令牌:

export const BATCH_SERVICE_PROVIDER = new InjectionToken<BatchService>('BATCH_SERVICE_PROVIDER');
export function batchServiceProvider(source: string){
    return new BatchService(source);
}
构造函数的设置如下所示:

export const BATCH_SERVICE_PROVIDER = new InjectionToken<BatchService>('BATCH_SERVICE_PROVIDER');
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]},
  ]
})
最终解决方案:

@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]},
  ]
})
大致相当于。基本上,你不能依赖于那些没有提供的东西,但是你可以提供它。基本上,你不能依赖于没有提供的东西,但你可以很容易地提供它