ошибка TS2339: свойство do не существует для типа Observable ‹HttpEvent ‹any›

Я использовал angular-5.x, и как только я обновился до angular-6.x и его одноранговых зависимостей (зона, rxjs и т. Д.).

Я начал сталкиваться со следующими ошибками

ОШИБКА в src / app / xxx / apiConnection / auth.interceptor.ts (25,33): ошибка TS2339: свойство 'do' не существует для типа 'Observable>'. src / app / xxx / apiConnection / auth.interceptor.ts (30,31): ошибка TS2339: свойство do не существует для типа Observable>.

мой код выглядит следующим образом:

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);
      });
    }
  }

person Atikur Rahman    schedule 15.05.2018    source источник


Ответы (2)


Оператор do был переименован в оператор tap в rxjs6.

Надеюсь, поможет

person Pierre Mallet    schedule 03.07.2018

В завершение Пьеру.
Если вы do хотите использовать tap (Pun ...), вам нужно сначала передать его по конвейеру.
Разрывная линия будет выглядеть примерно так:

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

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