为什么`combineLatest`返回OperatorFunction< {},number>

时间:2018-05-15 07:37:38

标签: angular rxjs

我正在使用rxjs 6我的代码中有两个可观察对象

import { combineLatest } from 'rxjs/operators';

loading$: Observable<boolean>;
loaded$: Observable<boolean>;

观察结果不是来自http请求,而是来自store

我需要根据这个逻辑将序列组合/转换为一个单一的可观察值:
如果序列truetruefalsefalse - 需要返回新的可观察true,否则需要返回false

我尝试使用combineLatest来实现这一目标:

combineLatest(
    this.loaded$, this.loading$,
    (val1, val2) => Number(val1) + Number(val2) === 1
)

但问题是我的combineLatest会返回'OperatorFunction<>而不是Observable<>,所以我无法订阅。 你有任何想法如何解决这个问题?或者如果有其他方法可以采取?

更新:
似乎这就是我的问题import { combineLatest } from 'rxjs';的答案 目前正在测试

2 个答案:

答案 0 :(得分:8)

使用RxJS 5.5时,最有可能的原因是你使用combineLatest中的rxjs/operators,而你想将它用作Observable“创建方法”,这意味着你需要使用rxjs/observable/combineLatest

我的意思是你需要使用它:

import { combineLatest } from 'rxjs/observable/combineLatest';

......而不是:

import { combineLatest } from 'rxjs/operators';

编辑:由于您提到您正在使用RxJS 6,因此可以从rxjs导入静态变体。

import { combineLatest } from 'rxjs';

如果您正在寻找combineLatest运算符,则必须按以下方式导入:

import { combineLatest } from 'rxjs/operators';

答案 1 :(得分:1)

我猜我只需要这个

.