RxJs withLatestFrom / объединитьЛатест: игнорировать второй источник, когда ничего не излучается - PullRequest
0 голосов
/ 19 февраля 2019

В приложении Angular я ищу оператора / способ создания наблюдаемой с помощью rxjs, но я не понимаю, как это сделать.

Мне нужно (довольно просто)функция фильтра, но я не смог заставить ее работать.

Источник 1 - это массив.Source 2 - это текстовое поле (для фильтрации массива).

this.source1 = of (['abc', 'aef', 'ahi', 'jkl', 'xyz']);
this.filterBox = new FormControl();

combineLatest(
      source1,
      this.filterBox.valueChanges,
      (items, filter) => {
        console.log(items, filter);
        return items.filter(item => item.includes(filter));
      }
    ).subscribe(val => console.log(val));

Это должно вывести весь массив в начале, когда filterBox пусто и, следовательно, ничего не излучает.

Я попытался объединить последний, но документация гласит:

, пока каждый из наблюдаемых источников испускает хотя бы один элемент

То же самое с withLatestFrom.

Какой оператор следует использовать здесь?

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете использовать оператор startWith, чтобы дать наблюдаемому начальное значение.что-то вроде:

combineLatest(
 source1,
 this.filterBox.valueChanges.pipe(startWith("")),
 (items, filter) => {
  console.log(items, filter);
  return items.filter(item => item.includes(filter));
 }
).subscribe(val => console.log(val));

Узнайте больше здесь https://coryrylan.com/blog/subscribing-to-multiple-observables-in-angular-components

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...