Свойство 'filter' не существует для типа 'BehaviorSubject <string>'. в rxjs 6 - PullRequest
0 голосов
/ 03 июля 2018

При обновлении rx js с 5 до 6 выдает ошибку ниже

[ts] Свойство 'filter' не существует для типа 'BehaviorSubject'.

Текущее поведение

import {BehaviorSubject} from 'rxjs';

tokenSubject: BehaviorSubject<string> = new BehaviorSubject<string>(null);
return this.tokenSubject
                .filter(token => token != null)
                .take(1)
                .switchMap(token => {
                    return next.handle(this.addToken(req));
                });

[ts] Свойство 'filter' не существует для типа 'BehaviorSubject'.

Окружающая среда

 "@angular/common": "^6.0.3",
   "rxjs": "^6.0.0",

Ожидаемое поведение

Нет ошибок и работает нормально

Предыдущее поведение

import { BehaviorSubject } from "rxjs/BehaviorSubject";
tokenSubject: BehaviorSubject<string> = new BehaviorSubject<string>(null);
return this.tokenSubject
                .filter(token => token != null)
                .take(1)
                .switchMap(token => {
                    return next.handle(this.addToken(req));
                });

[ts] Свойство 'filter' не существует для типа 'BehaviorSubject'.

Окружающая среда

"@angular/common": "^5.0.3",
  "rxjs": "^5.4.3"

1 Ответ

0 голосов
/ 03 июля 2018

Руководство по обновлению RxJS v5.x до v6 говорит:

Предыдущий стиль кодирования операторов цепочки был заменен передачей результата одного оператора другому.

Использовать синтаксис трубопровода:

return this.tokenSubject.pipe(
    filter(token => token != null),
    take(1),
    switchMap(token => {
        return next.handle(this.addToken(req));
    })
);
...