我有一个调用服务的save
函数。我通过传递成功函数和错误函数来订阅服务调用的结果。成功函数按预期工作。但是,当由于对服务发出无效请求而调用错误函数时,我收到以下错误:
Error from Save command: TypeError: Cannot read property 'log' of undefined
这种情况正在发生,因为无论出于何种原因,console
在错误函数中变得未定义。但奇怪的是console.log
在成功函数中运作得非常好。
以下是save
功能的摘录:
this.returnFileParameterService.save(this.selectedParam).subscribe(
res => {
let param = _.find(this.returnFileParameters, param => _.isUndefined(param.id) || _.isNull(param.id));
if (_.isUndefined(param)){
param = _.find(this.returnFileParameters, ['id', res.id]);
}
_.set(param, 'id', res.id);
_.set(param, 'modifiedDate', res.modifiedDate);
console.log("test");
},
err => console.log('Error from Save command: ' + err)
);
答案 0 :(得分:1)
好的,我明白了:我正在调用.catch(this.handleError);
添加我的错误处理程序作为catch订阅者,但在我的错误处理程序中我有这一行:this.logger.log('handleError()');
。 this.logger
不存在因为this
被设置为调用错误处理程序的函数而不是包含错误处理程序的类,所以我需要为catch订阅添加一个闭包:{{1 }}