用 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
使用 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