用Observable <string>过滤Observable <any []>

时间:2018-10-31 18:43:21

标签: angular observable angular7

使用Angular 7,我有一个搜索输入,该输入连接到Observable<string>

searchValue = new FormControl("");
this.searchChanges$ = searchValue.valueChanges

我还有另一个Observable<Record[]>,我是从firebase那里获得的,我正在尝试使用以下搜索字符串过滤数组:

return this.searchChanges$.pipe(
  withLatestFrom(recordsObserver, (searchValue, records) => {
    return records.filter(record => record.title.includes(searchValue));
  })
);

问题在于,直到输入内容发生更改,列表才会更新,什么是解决此问题的最佳方法?

1 个答案:

答案 0 :(得分:1)

当两个可观察物都将用作新可观察物的主要来源时,您应该使用 combineLatest 而不是 withLatestFrom 。 这样,当您的一个源可观测对象触发时,您的新组合可观测对象也将触发。

关于这种用例的另一个便捷工具是使用 startWith