Фильтр Observable<любой []> с Observable<строка>

Используя 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 ответ

Решение

Когда обе наблюдаемые предназначены для использования в качестве основного источника для вашей новой наблюдаемой, вы должны скорее использовать сочетании с последним с последним с последним. Таким образом, когда одна из ваших исходных наблюдаемых сработает, сработает и ваша новая комбинированная наблюдаемая.

Другим удобным инструментом, когда дело доходит до таких сценариев использования, является использование startWith

Другие вопросы по тегам