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