控制台在Chrome中未定义

时间:2017-01-13 16:27:06

标签: angular typescript

我有一个调用服务的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)
        );

1 个答案:

答案 0 :(得分:1)

好的,我明白了:我正在调用.catch(this.handleError);添加我的错误处理程序作为catch订阅者,但在我的错误处理程序中我有这一行:this.logger.log('handleError()');this.logger不存在因为this被设置为调用错误处理程序的函数而不是包含错误处理程序的类,所以我需要为catch订阅添加一个闭包:{{1 }}