我正在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()
不起作用,但是有什么我可以做的吗?