我有这样的服务
@Injectable()
export class MyService {
constructor(private store: Store, @Optional() type: string){}
static forType(type: string) {
return { provide: MyService, deps: [Store], useFactory: factoryFn.bind(type) }
}
}
export function factoryFn(store: Store, type: string) {
return new MyService(store, type);
}
并想像这样将它注入我的组件中
@Component{
providers: [MyService.forType('hello')]
}
export class MyComponent {}
但这给了我以下错误
Function calls are not supported in decorators but 'factoryFn' was called in 'MyService'
'MyService' calls 'factoryFn'.
我希望将它作为实际服务上的静态方法的原因是,因为我不希望组件知道 MyService 需要哪些依赖项。MyService 也在很多不同的地方使用,所以通过这种方式,我也避免了重复。
有没有办法欺骗 Angular 允许函数调用?
最好的问候, 本尼迪克特