我正在使用Angular4 + PHP网站,我使用Promise向服务器发送HTTP请求,因为我希望我的应用程序根据服务器的响应执行路由。我想在then()中访问一个类变量,但它会抛出undefined()
错误。
这是我的代码:
status = false;
checkUser(): Promise<any>{
// .....
return this.http
.get('http://localhost:8000/api/user', this.options)
.toPromise()
.then(this.extractData)
.catch(this.handleError);
}
private extractData(res: any) {
data = res.json();
this.status = data.status; // here it throws error undefined
return this.status;
}
还有其他方法可以实现吗?
答案 0 :(得分:3)
如果传递函数引用,this
将不再指向本地类实例。
您可以使用bind
.then(this.extractData.bind(this)
或箭头功能
.then((res) => this.extractData(res))
获得理想的行为。