类型“ BehaviorSubject <字符串>”上不存在属性“过滤器”。在rxjs 6

时间:2018-07-03 09:20:36

标签: rxjs rxjs6

将rx js从5升级到6时,抛出以下错误

[ts]类型“ 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]类型“ 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]类型“ BehaviorSubject”上不存在“过滤器”属性。

环境

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

1 个答案:

答案 0 :(得分:6)

RxJS v5.x to v6 Update Guide  说:

  

以前的链接运算符编码风格已由将一个运算符的结果传递给另一个运算符来代替。

使用管道语法:

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