首页 > 解决方案 > 如何将 Observable 和 Subject 组合成 combineLatest?

问题描述

我是 combineLatest 的新手,但我正在尝试组合一个具有:

0: Observable {_isScalar: false, _subscribe: ƒ}
1: Observable {_isScalar: false, _subscribe: ƒ}
2: Observable {_isScalar: false, _subscribe: ƒ}
3: Subject {_isScalar: false, observers: Array(0), closed: false, isStopped: false, hasError: false, …}
4: Subject {_isScalar: false, observers: Array(0), closed: false, isStopped: false, hasError: false, …}
5: Observable {_isScalar: false, _subscribe: ƒ}
6: Observable {_isScalar: false, _subscribe: ƒ}

但由于某种原因

combineLatest(validations).subscribe(result => {console.log("it works"});

不发火。我是这个功能的新手,没有错误消息让我无法理解哪里出了问题。如果我删除项目 3-4 它会触发。但我需要它们。请帮忙。谢谢你。

标签: angular

解决方案


Observable如果每个内部都至少有一个值,则 CombineLatest 订阅有效。似乎当你订阅时,你的一些validations没有价值。

您可以为其添加起始值,只需添加.pipe(startsWith(null))到每个 Observable/Subject。

merge(validations)如果方便,您可以使用另一种方法。


推荐阅读