Angular 4 - Return 来自拦截器的 HttpErrorResponse

Angular 4 - Return HttpErrorResponse from interceptor

这在我的拦截器中

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:return 到最后 url、400:显示消息等)。当我在订阅可观察对象时发现错误时,我得到了这个

"You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable."

但我需要一个带有状态、状态文本等的 HttpErrorResponse

删除拦截器解决了我的问题,但我需要它来处理所有会话内容。

您的代码是这样的:

if (err instanceof HttpErrorResponse) {
  this.errorControl(req, err.status);
  return Observable.throw(err);
}

但是我在任何地方都没有看到 else

这意味着当您的错误不是 HttpErrorResponse 的实例时,您不会 return 处理错误。

在任何情况下你都应该 return Observable,而不仅仅是在它适合你的时候。