私はすべてのいくつかのサービスが注入されるはずのangular2コンポーネントのセットを持っています。私が最初に思ったのは、スーパークラスを作成し、そこにサービスを注入するのが最善だと思いました。次に、私のコンポーネントのいずれかがそのスーパークラスを拡張しますが、このアプローチは機能しません。
簡略化した例:
export class AbstractComponent {
constructor(private myservice: MyService) {
// Inject the service I need for all components
}
}
export MyComponent extends AbstractComponent {
constructor(private anotherService: AnotherService) {
super(); // This gives an error as super constructor needs an argument
}
}
これを解決するにはMyService
、すべてのコンポーネント内に注入し、その引数をsuper()
呼び出しに使用しますが、これは明らかに不合理なことです。
スーパークラスからサービスを継承するようにコンポーネントを正しく整理するにはどうすればよいですか?
new MyService()
代わりに使用すると、まったく同じ結果が得られます(より効率的です)。異なるサービスやコンポーネント間で同じサービスインスタンスを共有する場合、これは機能しません。すべてのクラスは別のMyService
インスタンスを取得します。
myService
。これを回避し、派生クラスにさらにコードを追加するソリューションを見つけました...