![](/img/trans.png)
[英]Accessing protected fields of base class from derived (ES2019 private class)
[英]Accessing base member from derived class in function
我已經創建了Angular2 + Typescript項目。 我有很多表,所以我想擁有一些像基本組件這樣的東西。
有我的基本組成部分:
export abstract class ManagementComponent<T> implements BaseComponent {
protected selectedItem: T;
protected items: Array<T>;
}
現在有我的孩子部分。 我想從http獲取所有項目,然后將其分配給基類
export class CompetencesComponent extends ManagementComponent<Competence> implements OnInit {
thisField: string;
constructor(private service: CompetencesService) {
super();
}
ngOnInit(): void {
this.getCompetences();
}
private getCompetences() {
this.service.getCompetences().subscribe(function (competences: Array<Competence>) {
this.thisField // ok
this.items // not ok
})
}
}
知道如何從訂閱方法訪問基本字段嗎?
目前,我希望您無法引用thisField
或items
,因為您應該在訂閱函數中丟失this
上下文。
您可以切換到箭頭功能以保留上下文:
this.service.getCompetences().subscribe((competences: Array<Competence>) => { ... }
您可以如下設置父類的能力列表:
private getCompetences() {
var self = this;
this.service.getCompetences().subscribe(function (competences: Array<Competence>) {
this.thisField // ok
self.items = competences; // not ok
})
}
您無法通過this
綁定訪問items
屬性的原因是范圍。 在回調內部, this
綁定綁定到其他對象,並且您松開了上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.