Я пытаюсь показать компонент ошибки, когда есть ошибка в приложении. Я делаю interceptor
, проверка, есть ли какая-либо ошибка, является ответом службы.Если да, он будет перенаправлен на error
компонент, но в настоящее время он не перенаправляет, почему вот мой код https://stackblitz.com/edit/angular-ctwnid?file=src%2Fapp%2Ferror.intercepter.ts
import { Injectable } from '@angular/core';
import { HttpEvent, HttpErrorResponse, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import {catchError, map} from 'rxjs/operators';
@Injectable()
export class ErrorInterceptor implements HttpInterceptor {
constructor(private router: Router) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).catchError(
(err: HttpErrorResponse) => {
if (err.status === 401) {
this.router.navigate(['/error']);
}
return Observable.throw(err);
}
);
}
}
@NgModule({
imports: [ BrowserModule,
RouterModule.forRoot(routes),
HttpClientModule,FormsModule ],
declarations: [ AppComponent,
HelloComponent ,ErrorComponent],
bootstrap: [ AppComponent ],
providers: [TestService,TestResolver,
{
provide: HTTP_INTERCEPTORS,
useClass: ErrorInterceptor,
multi: true
}
]
})