4
votes

I was using angular-5.x and as soon as I upgraded to angular-6.x and its peer dependencies (zone, rxjs etc.) as well.

I started to face following errors

ERROR in src/app/xxx/apiConnection/auth.interceptor.ts(25,33): error TS2339: Property 'do' does not exist on type 'Observable>'. src/app/xxx/apiConnection/auth.interceptor.ts(30,31): error TS2339: Property 'do' does not exist on type 'Observable>'.

my code is as follows:

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

2 Answers

1
votes

The do operator has been renamed to tap operator in rxjs6.

Hope it helps

1
votes

In completeness to Pierre.
If you do want to use tap (Pun intended..) you need to pipe it first.
Your breaking line will somewhat look like this:

import { tap } from 'rxjs/operators';
...

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