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

Filter Observable<any[]> with Observable<string>

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

问题是只有在输入中发生某些更改后列表才会更新,解决此问题的最佳方法是什么?

当两个 observable 都作为新 observable 的主要来源时,您应该使用 combineLatest 而不是 withLatestFrom。 这样,当您的一个源 observable 触发时,您的新组合 observable 也会触发。

对于此类用例,另一个方便的工具是利用 startWith