经过长时间的搜索,我不断得到相同的答案,这似乎是正确的:
intercept(request: HttpRequest<any>, next: HttpHandler):
Observable<HttpEvent<any>> {
return next.handle(request).catch(errorResponse => {
const status = errorResponse.status;
if (status === 401) { this.matDialog.open(UserDialogComponent); }
return Observable.throw(status);
});
}
然而,这会产生以下错误:
错误错误:未捕获(承诺):401 在S(polyfills.8847e333380b2b4c3385.bundle.js:1) ...
除了:
polyfills.8847e333380b2b4c3385.bundle.js:1 GET http://localhost:8080/users/auth 401(未经授权)
错误。
401是故意测试我的错误处理。
这是Angular中拦截器的Http错误的预期和唯一处理,还是我能以某种方式捕获此错误?
非常感谢提前。
答案 0 :(得分:1)
对于仍然对答案感兴趣的人:
原来这是项目中其他地方没有.catch订阅的路线保护。
所以这不是正常行为,应该进一步调查。