如何处理可观察到的“无法读取未定义的属性” ngOriginalError”

时间:2019-01-16 11:16:28

标签: angular observable throw

我创建了一个处理HTTP调用的服务,并且仅在结果成功时才将响应返回给调用者。

我正在使用Angular Observable Map运算符检查结果和状态代码,如果响应没有所需的输出,则它应在抛出自定义错误消息后停止观察程序管道,该错误消息被catchError块捕获,正常工作,但同时又出现控制台错误。

Angular版本-5 +,Rxjs版本5 +

fetchRecords(): Observable < any > {
  return this.httpService.getData('cmpgnInfo/outlets').pipe(
    map((response: any) => {
      if (response[0].status !== 'ERROR') {
        throw new Error('Not able to details.');
      }
      return response[0].results;
    }),
    catchError(err => Observable.throw(this.showError('Outlets', err)))
  );
}

showError(logString: string, message ? : string) {
  this.logService.error(`Failed to load ${logString}`);
  this.modalService.showErrMessage(message);
}

如何处理此订户未捕获的错误?导致此问题的代码有什么问题。

  

Subscriber.js:247未捕获的TypeError:无法读取属性   'ngOriginalError'未定义           在getOriginalError(core.js:1430)           在ErrorHandler._findOriginalError(core.js:1548)           在ErrorHandler.handleError(core.js:1505)           在Object.next(core.js:5508)           在SafeSubscriber.schedulerFn [作为_next](core.js:4342)           在SafeSubscriber .__ tryOrUnsub(Subscriber.js:243)           在SafeSubscriber.next(Subscriber.js:190)           在Subscriber._next(Subscriber.js:131)           在Subscriber.next(Subscriber.js:95)           在EventEmitter.Subject.next(Subject.js:56)           在EventEmitter.emit(core.js:4322)           在评估时(core.js:4782)           在ZoneDelegate.invoke(zone.js:334)           在Zone.run(zone.js:126)           在NgZone.runOutsideAngular(core.js:4708)

2 个答案:

答案 0 :(得分:1)

当我不小心扔了一个 null 时,我收到了这个错误。像这样:

throw null;

它与任何订阅或可观察对象无关,至少没有明确说明。

答案 1 :(得分:0)

您没有尝试执行以下操作来代替显示错误:

 this.httpService.getData(id).subscribe(
          response => {
            // success
          },
          err => {
            console.log("Error", err)
          })