我正在构建一个Angular2应用程序。
我在deleteObject
中有一个异步函数myService
。它返回一个Promise。我在Component中有另一个名为refresh
的函数,它刷新了页面。如何从Promise内部调用refresh。这就是我试过的:
export class AppComponent{
refresh(){
// refresh page here
}
delete(){
this.myService.deleteObject(params).then(
function(data){
//this.refresh() doesn't work here.
});
}
}
答案 0 :(得分:8)
如果您使用Typescript进行编码,则可以使用fat arrow functions代替。它们保留了您期望的this
上下文。所以替换
delete(){
this.myService.deleteObject(params).then(
function(data){
//this.refresh() doesn't work here.
});
}
有了这个:
delete(){
this.myService.deleteObject(params).then(
(data)=>{
//this.refresh() should work here
}
);
}
答案 1 :(得分:1)
这是一个背景问题。 “this”指的是回调函数的上下文,它可能是承诺或其他东西。你真正想要的是对组件上下文的引用,你可以像这样实现
delete(){
var componentRef = this; // colloquially "that" or "self"
this.myService.deleteObject(params).then(
function(data){
componentRef.refresh() // does work here.
});
}