这是我的拦截器
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req)
.catch(err => {
if (err instanceof HttpErrorResponse) {
this.errorControl(req, err.status);
return Observable.throw(err);
}
});
}
我需要捕获从我的组件中的服务器发送的错误,因为我必须采取相应的行动(404:返回上一个URL,400:显示消息等)。当我在订阅observable中捕获错误时,我得到了这个
"You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable."
但我需要一个HttpErrorResponse及其状态,状态文本等
删除拦截器解决了我的问题,但我需要它来处理所有会话。
答案 0 :(得分:1)
您的代码是:
if (err instanceof HttpErrorResponse) {
this.errorControl(req, err.status);
return Observable.throw(err);
}
但我在任何地方都看不到else
!
这意味着当您的错误不是HttpErrorResponse
的实例时,您不会返回错误。
在任何情况下,您都应该返回一个Observable,而不仅仅是在适合您的情况下。