Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何处理可观察的';无法读取属性';ngOriginalError';未定义的';_Angular_Observable_Throw - Fatal编程技术网

Angular 如何处理可观察的';无法读取属性';ngOriginalError';未定义的';

Angular 如何处理可观察的';无法读取属性';ngOriginalError';未定义的';,angular,observable,throw,Angular,Observable,Throw,我创建了一个服务,该服务处理HTTP调用,并仅在结果成功时才将响应返回给调用方 我使用Angular observable Map操作符来检查结果和状态代码,如果响应没有期望的输出,那么它应该在抛出自定义错误消息后停止观察者管道,该消息被捕获在catchError块中,该块正在工作,但同时在控制台中获得未捕获的错误 角度版本-5+,Rxjs版本-5+ fetchRecords(): Observable < any > { return this.httpService.getD

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

我使用Angular observable Map操作符来检查结果和状态代码,如果响应没有期望的输出,那么它应该在抛出自定义错误消息后停止观察者管道,该消息被捕获在catchError块中,该块正在工作,但同时在控制台中获得未捕获的错误

角度版本-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);
}
fetchRecords():可观察{
返回此.httpService.getData('cmpgnInfo/outlets').pipe(
map((响应:任意)=>{
如果(响应[0]。状态!=“错误”){
抛出新错误('无法查看详细信息');
}
返回响应[0]。结果;
}),
catchError(err=>Observable.throw(this.bathrorr('Outlets',err)))
);
}
淋浴错误(日志字符串:字符串,消息?:字符串){
this.logService.error(`Failed to load${logString}`);
此.modalService.bathrmessage(消息);
}
如何处理此订户未捕获错误?导致这种情况的代码有什么问题

Subscriber.js:247未捕获类型错误:无法读取属性 未定义的“ngOriginalError” 在getOriginalError(core.js:1430) 在ErrorHandler.\u findOriginalError(core.js:1548) 在ErrorHandler.handleError(core.js:1505) 在Object.next(core.js:5508) 在SafeSubscriber.schedulerFn[as_next](core.js:4342) 在保险箱订阅者处(订阅者.js:243) 在SafeSubscriber.next(Subscriber.js:190) 在订阅服务器上。\u下一步(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)


您没有显示错误,而是尝试了以下操作:

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

当我不小心抛出一个
null
时,我得到了这个错误。像这样:

抛出空值;

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

由于其作用域发生了变化,因此此.bathrorr()始终未定义。还有
Observable.throw()
抛出错误,但您正在调用一个函数。将其更改为
catchError(err=>this.bathrorr('Outlets',err))
然后
返回Observable.throw()
内部
bathrorr()
我看到其中一篇文章提出了这一建议,我也遵循了同样的建议,结果出现了这个错误。请尝试我建议的解决方案,并让我知道它是否有效。您可以在StackBlitz示例上复制这一点吗?它不起作用。catchError(err=>{this.batherRor('Outlets',err);返回Observable.throw();})此处相同。让
抛出
而不是
返回