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,而不仅仅是在它适合你的时候。
这在我的拦截器中
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,而不仅仅是在它适合你的时候。