如何为角度为5的拦截器添加错误缓存?

时间:2018-08-01 04:50:52

标签: angular

我是新手。拦截器已创建为服务。工作正常。现在添加错误捕获器。当我添加“ .do”部分时,它将无法正常工作。如果我删除了这部分工作正常。同样,也找不到为什么它不起作用的原因。在下面显示我的代码。请告诉我是否做错了什么。 提前致谢。

 import { Injectable } from '@angular/core';
 import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse } from '@angular/common/http';
 import { Observable } from 'rxjs/Observable';
 import 'rxjs/add/observable/throw';

@Injectable()
export class AuthService implements HttpInterceptor {
  constructor() { }
  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    if (request.url.indexOf("UserLogin") > 0 || request.url.indexOf("GetLogo") > 0) {
      return next.handle(request);
    }
    var cookie = document.cookie;
    var token = cookie.split("authToken=")[1].split(";")[0];
    request = request.clone({
      setHeaders: {
        Authorization: `Bearer ${token}`
      }
    });
    return next.handle(request).do((event: HttpEvent<any>) => {}, (err: any) => {
      if (err instanceof HttpErrorResponse) {
        // do error handling here
      }
    });

  }
}

1 个答案:

答案 0 :(得分:1)

我想您可以在rxJS 5.5(与Angular 5兼容)上进行传输,请尝试将行更改为

return next.handle(request).pipe(do((event: HttpEvent<any>) => {}, (err: any) => {
      console.log(err)
    }));

让我知道你的生活。

rxJS reference