0

こんなサービスがあります

@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 をだまして関数呼び出しを許可する方法はありますか?

よろしく、 ベネディクト

4

1 に答える 1