在函数中从派生类访问基本成员

时间:2017-07-07 13:36:02

标签: javascript angular typescript

我创建了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

知道我如何从订阅方法访问基本字段吗?

2 个答案:

答案 0 :(得分:1)

目前我预计您无法引用thisFielditems,因为您应该丢失订阅功能中的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绑定绑定到其他东西,你松开了上下文。