【问题标题】:Property 'filter' does not exist on type 'BehaviorSubject<string>'. in rxjs 6类型“BehaviorSubject<string>”上不存在属性“过滤器”。在 rxjs 6
【发布时间】:2018-12-11 13:12:22
【问题描述】:

在将 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"

【问题讨论】:

    标签: rxjs rxjs6


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-02-15
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 2017-05-23
      • 2019-04-11
      相关资源
      最近更新 更多