從Angular v2.0開始,inheritance is supported between components。如何繼承從超類注入到Angular 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對Component Inheritance支持的錯誤嗎?
爲什麼在組件中使用繼承? – shusson
我誤解了你的問題。這不是父母和孩子,而是子和超級。 –
@Gunter你能澄清嗎?根據我的經驗,父類是子類,因爲超類是子類(當關系樹是2層時)。我錯過了什麼嗎? –