Angular 6: Property 'catch' does not exist on type 'Observable'?

前端 未结 8 1616
情深已故
情深已故 2020-12-15 18:39

I am upgrading my app to Angular 6. I am upgrading from Angular 4, but the code below is causing errors in Angular 6, where it worked fine

8条回答
  •  有刺的猬
    2020-12-15 19:35

    Since you tagged your question rxjs6, I'm assuming the upgrade to Angular 6 includes an upgrade to rxjs6. In that case, it's not working because methods on the observable object are now standalone operators that you can apply using pipe(). Also, imports have changed. See the migration guide for more details.

    With rxjs6 it should look something like this:

    import { Observable, EMPTY, throwError } from 'rxjs';
    import { catchError } from 'rxjs/operators';
    
    private authInterceptor(observable: Observable): Observable {
       return observable.pipe(
           catchError( err => {
                if (err.status == 401) {
                    this.router.navigateByUrl('/login');
                    return EMPTY;
                } else {
                    return throwError(err);
                }
           })
       );
     }
    

提交回复
热议问题