我创建了Angular2 + Typescript项目。我有很多表,所以我希望有类似基本组件的东西。
有我的基本组件:
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
})
}
}
现在有我的孩子组件。我想从http获取所有项目,然后将其分配到基类
[mysqld]
early-plugin-load=keyring_file.dll
知道我如何从订阅方法访问基本字段吗?
答案 0 :(得分:1)
目前我预计您无法引用thisField
或items
,因为您应该丢失订阅功能中的this
上下文。
您可以切换到箭头功能以保留上下文:
this.service.getCompetences().subscribe((competences: Array<Competence>) => { ... }
答案 1 :(得分:0)
您可以将能力列表设置为父类,如下所示:
private getCompetences() {
var self = this;
this.service.getCompetences().subscribe(function (competences: Array<Competence>) {
this.thisField // ok
self.items = competences; // not ok
})
}
您无法通过items
绑定访问this
属性的原因是范围。内部回调this
绑定绑定到其他东西,你松开了上下文。