2017-01-13 9 views
0

サービスを呼び出すsaveという関数があります。私はサービスコールの結果を成功関数とエラー関数に渡して購読します。成功関数は期待通りに機能します。しかし、誤差関数が原因でサービスに対して行われた無効な要求で呼び出されたとき、私は次のエラーが表示されますChromeでコンソールが定義されていません

Error from Save command: TypeError: Cannot read property 'log' of undefined 

これは、何らかの理由であるために起こっている、consoleは誤差関数で不定となります。しかし、奇妙なことは、console.logが成功関数で完璧に機能するということです。ここで

save機能の抜粋です:私はキャッチ加入者としての私のエラーハンドラを追加するために .catch(this.handleError);を呼んでいたが、私のエラーハンドラ内で、私はこの行を持っていた:

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

これはChromeにのみ影響しますか? – Amy

+0

私は少し混乱しています。受信したエラーは、エラーハンドラから出力されたエラーのように見えます。私はその 'コンソール'が未定義だとは思わない。 "未定義のプロパティ 'ログを読み取ることができません"という約束が拒否されているようです。これを明確にすることはできますか? – Amy

+0

うわー。あなたは絶対に正しいです。私はそれを逃したとは信じられません。しかし、まだ正確に何が起こっているのかわからない... – wheeler

答えて

1

OK、私はそれを考え出しました:this.logger.log('handleError()');thisが、エラーハンドラが含まれていたクラスの代わりにエラーハンドラを呼び出す関数に設定されていたので、this.loggerが存在しなかったので、catchサブスクリプションにクロージャを追加する必要がありました。.catch(error => this.handleError(error));

関連する問題