У меня есть сервис, подобный этому
@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 в разрешении вызова функции?
С уважением, Бенедикт