Angular 我能把角http拦截器改为500吗?
我有一个http拦截器,它将截获500个错误并向用户显示一个对话框。下面是我的拦截器代码片段:Angular 我能把角http拦截器改为500吗?,angular,angular-http-interceptors,Angular,Angular Http Interceptors,我有一个http拦截器,它将截获500个错误并向用户显示一个对话框。下面是我的拦截器代码片段: intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { .... return next.handle(request).pipe(catchError(error => { // intercept the respon
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
....
return next.handle(request).pipe(catchError(error => {
// intercept the respons error
this.handleAuthError(error, request); // pass error to function
return of(error.error);
}) as any, finalize(() => {
++this.counter;
this.enableSubmissionButton(this.counter);
}));
}
private handleAuthError(err: HttpErrorResponse, request: HttpRequest<any>): Observable<HttpEvent<any>> {
// handle your auth error or rethrow
let errorMessage: any = '';
if (err.error instanceof ErrorEvent) {
errorMessage = `Error: ${err.error.message}`;
} else {
errorMessage = `Error Code: ${err.status}\nMessage: ${err.message}`;
if (err.status === 401 || err.status === 403) {
this.userAuthService.purgeAuth();
} else if (err.status === 500 || err.status === 404) {
this.dialog.open(MessageDialogComponent, {
disableClose: true,
data: err.error.Message || `${err.status} ${err.statusText}`,
});
}
}
return throwError(errorMessage);
}
显然,上面的console.log不会发生,因为http拦截器会处理它。
我可以做些什么来检查(例如)上面的请求是否有500个错误,即使http拦截器已经处理了它。如果在这个请求中有任何这样的错误,我需要运行一些特定的代码
this.subscription.add(
url.subscribe(data => {
if (data.Status) {
// Save was successful.
}
}, err => {
console.log(err);
})
);