HttpErrorInterceptor 未在 Angular 中重定向

HttpErrorInterceptor not redirecting in Angular

我正在尝试制作一个全局错误拦截器,以便在每个错误上它都会使用 error=true 查询参数重定向到主页。它以某种方式捕获错误,记录它但不重定向。我做错了什么?

HttpErrorInterceptor:

@Injectable()
export class HttpErrorInterceptor implements HttpInterceptor {

  constructor(private router: Router) {
  }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request)
      .pipe(
        catchError((error: HttpErrorResponse) => {
          let errorMsg = '';
          if (error.error instanceof ErrorEvent) {
            errorMsg = `Error: ${error.error.message}`;
          } else {
            errorMsg = `Error Code: ${error.status},  Message: ${error.message}`;
          }
          const urlParams = new URLSearchParams(window.location.search);
          this.router.navigate(['main'], {queryParams: {error: true, sesskey: urlParams.get('sesskey')}});
          console.log(errorMsg);
          return throwError(errorMsg);
        })
      )
  }
}

app.module.ts:

providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: HttpErrorInterceptor,
      multi: true
    },

我认为这是有效的,你是如何测试它的

对我来说它是这样工作的

export class AppComponent {

  constructor(private http: HttpClient) {
    this.getData();
  }

  getData() {
    const url = 'Fake url';
    return this.http.get(url).subscribe();
  }
}