错误TS2339:类型'Observable <httpevent <any>

时间:2018-05-15 15:38:23

标签: typescript rxjs angular6

当我升级到angular-6.x及其对等依赖项(zone,rxjs等)时,我正在使用angular-5.x。

我开始面临以下错误

  

src / app / xxx / apiConnection / auth.interceptor.ts中的错误(25,33):错误TS2339:类型'Observable&gt;'上的属性'do'不存在。   src / app / xxx / apiConnection / auth.interceptor.ts(30,31):错误TS2339:属性'do'在类型'Observable&gt;'上不存在。

我的代码如下:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    console.log(req)
    if(!req.headers.has('skip-interceptors')) {
      let card = localStorage.getItem(LocalStoregeIdems.oAUTH_ACCESS_CARD)
        , headers;
      if (card) {
        headers = req.headers.set('Authorization', card);
      }

      let clone = req.clone({
            withCredentials: true,
            headers
          });
      return next.handle(clone).do(event => {
        console.log(event);
      });
    } else {
      req.headers.delete('skip-interceptors');
      return next.handle(req).do(event => {
        console.log(event);
      });
    }
  }

2 个答案:

答案 0 :(得分:0)

在rxjs6中,do运算符已重命名为tap运算符。

希望有帮助

答案 1 :(得分:0)

对Pierre来说是完整的。
如果您do要使用tap(打算使用Pun ..),则需要先对其进行管道传输。
您的突破线将如下所示:

return next.handle(req).pipe(tap(event => {
        console.log(event);
    })
);