私が読んだのとは反対に、基本クラスに注入されたOpaqueToken参照が必要なクラスを拡張できないようです。@InjectをAngular 2で使用するとスーパークラスを拡張できません
例:この例では
@Component({})
export class StructureBase_Cmp {
constructor(private constants:App_Const){
}
}
、App_Const
は、次のようなモジュールで提供されてOpaqueTokenから来ている:
providers: [
{provide: App_Const, useValue: Constants}
],
私が何らかの理由であなたが呼び出す必要があることを承知しています@注入すると、最初の例が次のように変更されます。
@Component({})
export class StructureBase_Cmp {
constructor(@Inject(App_Const) private constants){
}
}
良い。
@Component({})
export class Hero_Cmp extends StructureBase_Cmp{
constructor(@Inject(App_Const) protected constants) {
super(constants);
}
}
しかし、私はこれに、スーパークラスを変更することはできません:
それは派生クラスで異なるタイプのものであり、「プライベート定数」と文句を言いますので、どのような正常に動作しないと、そのクラスを拡張しようとしています@Component({})
export class StructureBase_Cmp {
constructor(private constants:App_Const){
}
}
なぜなら、App_ConstはOpaqueTokenであり、定義されたタイプではありませんか?ドキュメントにもかかわらず、私は非常に混乱しています。これは、これがいくつかの味が箱の中ですぐに機能するように感じるからです。
tldr: OpaqueTokenから派生した注入されたアイテムを必要とするクラスを拡張したいが、そのためには、派生クラスで@Injectを使用する必要がある。何らかの理由で親クラスを壊す。
何か助けていただければ幸いです。ありがとう。
あなたはHero_Cmp' 'で他のパラメータ名を使用しようとしたことがありますか?コンストラクタ(@Inject(App_Const)protected appConstants){super(appConstants);} } ' – yurzui