当两个可观察对象之一发出时,如何使用另一个可观察对象的最新值发出合并的可观察对象?

问题描述 投票:0回答:1

我正在 Angular 中实现一个过滤器功能,并且我有两个可观察量:

items$
可观察量和
itemsFilter$
可观察量。第一个来自商店,第二个来自
BehaviourSubject

我正在尝试将这两个可观察值结合起来,以便始终应用过滤器。即使数据发生变化并发出新的items,过滤器也必须保持应用状态。如果过滤器改变也一样。

我尝试了几个运算符:

  • zip:仅当两个可观察对象都发出时才发出
  • merge:创建一个新的可观察对象,它从一个或另一个发出一个值
  • combineLatest:已弃用
  • withLatestFrom(this.itemsFilter$):当
    itemsFilter$
    发出
  • 时不发出
  • switchMap(() => this.itemsFilter$):当
    itemsFilter$
    发出
  • 时不发出
  • mergeMap(() => this.itemsFilter$):当
    itemsFilter$
    发出
  • 时不发出
  • combineLatestAll 需要可观察的可观察的

最终,我没有找到适合我的用例的运算符。使用 ngrx 和 rxjs 可观察量实现过滤器的标准方法是什么?

angular rxjs ngrx
1个回答
0
投票

使用来自

combineLatest(args: Observable[])
rxjs
运算符的
combineLatestWith
静态导入。

仅弃用

combineLatest(...args: Observable[])
符号。
combineLatest
运算符已弃用

combineLatest([items$, itemsFilter$])

items$.pipe(
   combineLatestWith(itemsFilter$),
)
© www.soinside.com 2019 - 2024. All rights reserved.