RxJs6 - Статическое объединение массива наблюдаемых - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть список объектов, динамически создаваемых пользователем.У каждого объекта есть наблюдаемая click$, я хочу объединить все эти click$ потоки в один поток.

Я пробовал статический оператор merge из импорта rxjs.С прямыми ссылками на поток:

sub = merge(list[0].click$, list[1].click$)
    .subscribe(e => { 
       console.log('My click event', e); 
    })

все идет как ожидалось.

Но когда я использую массив click$ в следующем вызове подписки, я получил объект Observableа не мое событие клика.

const streams= [];
list.forEach(o => { streams.push(o.click$); });

sub = merge(streams).subscribe(e => {
  console.log(e); // e is an observable ???
});

Почему?Что я делаю не так?

Вот аналогичная реализация с такой же ошибкой: https://stackblitz.com/edit/typescript-ohq6rx?file=index.ts&devtoolsheight=100

1 Ответ

0 голосов
/ 21 ноября 2018

Так как это массив.Вы можете распространять массив с помощью оператора ... в JavaScript.Если вы сделаете это, все должно работать хорошо.

Дополнительную информацию можно найти по адресу MDN

Я добавил код, чтобы вы поняли, что я имею в виду.Список - это массив объектов, которые имеют click$ свойств.этот массив отображается только на click$, а затем распространяется с помощью оператора ....

sub = merge(...list.map(item => item.click$)).subscribe(console.log)

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