Angular `useFactory` Service Setup throwing Uncaught Error: Can't Resolve all parameters for Component
Angular `useFactory` Service Setup throwing Uncaught Error: Can't Resolve all parameters for Component
很长一段时间以来第一次与 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]},
]
})
很长一段时间以来第一次与 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]},
]
})