Angular v2.0の時点で、inheritance is supported between components。 スーパークラスからインジェクションされたサービスを、サブクラス化されたコンポーネントを角2で継承する方法
は、依存関係、注射を介してコンストラクタに提供されるサービスで、親クラスを考えると、それは親の サービスにアクセスできるように、は、その親クラスをを拡張(または継承)子クラスを定義することが可能です?import {MyService} from './my.service'
import {OnInit} from '@angular/core'
@Component({
selector: 'parent-selector',
providers: [MyService],
templateUrl: 'my_template.html'
})
export class ParentClass implements OnInit{
public foobar: number;
constructor(protected _my_service: MyService){};
ngOnInit(){
foobar = 101;
}
}
@Component({
selector: 'child-selector',
templateUrl: 'my_template.html'
})
export class ChildClass extends ParentClass{
public new_child_function(){
// This prints successfully
console.log(this.foobar);
// This throws an error saying my_service is "undefined"
this._my_service.service_function();
}
}
我々がしようとすると、子クラスからnew_child_function()
を呼び出すと、それが正常に親のメンバーfoobarににアクセスしますが、this._my_service.service_function()
への呼び出しは、私たちに次それほど面白くないエラーを与える:
Cannot read property 'get' of undefined
親が注射したサービスは、この特定のケースでは子供に利用可能なではないようです。私は疑問に思って:
- が、これはAngular2のコンポーネントの継承サポートの現在の知ら制限ですか?
- このコードサンプルに何か不足していますか間違っていますか?
- これはAngular2のコンポーネント継承のバグですか?
なぜコンポーネントで継承を使用していますか? – shusson
あなたの質問が間違っています。これは親子ではなく、サブクラスとスーパークラスです。 –
@Gunterあなたは明確にすることができますか?私の経験では、スーパークラスがサブクラス化する(関係ツリーが2深い場合)ため、親は子になります。何か不足していますか? –