如何在没有'this'关键字的情况下引用Angular2组件属性/方法?

时间:2016-09-07 14:22:39

标签: angular properties closures this

我正在Angular2上构建一个应用程序,我一直遇到一个'this'关键字的问题,一直给我带来麻烦。由于我的组件(属性,方法)中的所有内容都只是类的属性,如果我想在另一个方法中引用它们,我必须使用'this'关键字,但有时我会丢失对它的引用,因为我到目前为止已嵌套分为多个功能。我使用闭包来解决这个问题(如下所示),但有时甚至闭包都不能很好地工作,因为闭包函数会失去对它内部使用的方法的引用(比如对服务的调用)。例如:

export class MyComponent implements OnInit {

    private data;

    getInfoFromService() {
        this.data = this.myService.fetchAllInfo();
    }

    retrieveInformation() {
        var getInfo = this.getInfoFromService;
        setTimeout(function() {
            getInfo();
        }, 5000);
    }

    ngOnInit() {
        this.retrieveInformation();
    }

}    

基本上我得到的是,无论如何在没有'this'关键字的类上引用方法?例如,我可以写一些类似的东西:

   retrieveInformation() {
        setTimeout(function() {
            MyComponent.getInfoFromService();  // instead of this.getInfoFromService()
        }, 5000);
    }

我知道这种语法MyComponent.getInfoFromService()不起作用,但是有什么我可以做的吗?

0 个答案:

没有答案