我在angular2中有一个奇怪的错误。而以下代码工作正常
loginResult.subscribe(
(data) =>
this.response = data,
(err) =>
this._ajaxService.handleError(err, 'A string to summarize the activity')
);
以下代码表示无法读取未定义的属性handleError。只有在请求失败的情况下才会发生这种情况。
loginResult.subscribe(
function (response) {
this.response = response;
console.log(this.response);
},
function (error) {
this._ajaxService.handleError(error, 'A string to summarize the activity')
}
);
答案 0 :(得分:2)
将"this"
绑定到成功和失败函数。
loginResult.subscribe(
function (response) {
this.response = response;
console.log(this.response);
}.bind(this), // <== "this" binding here
function (error) {
this._ajaxService.handleError(error, 'A string to summarize the activity')
}.bind(this)
);
答案 1 :(得分:2)
使用() => {}
(箭头函数)作为回调,以便this
引用该组件,因为arrow function不会创建自己的this
上下文:
loginResult.subscribe(
(response) => {
this.response = response;
console.log(this.response);
},
(error) => {
this._ajaxService.handleError(error, 'A string to summarize the activity')
}
);
但是,如果您想使用function(){}
,您可以bind组件的this
上下文功能如下:
function(response){
// now 'this' refers to the component class
}.bind(this)
答案 2 :(得分:0)
let that = this;
loginResult.subscribe(
function (res) {
that.response = res;
console.log(this.response);
},
function (error) {
that._ajaxService.handleError(error, 'A string to summarize the activity')
}
);