我有一个由用户动态创建的对象列表。每个对象都有一个可观察的click$
,我想将所有这些click$
流合并到一个流中。
我已经尝试了rxjs
导入中的merge
静态运算符。直接引用流:
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
因为它是一个数组。您可以使用JavaScript中的...
运算符来展开数组。如果你这样做,一切都会很好。
更多信息可在MDN 上找到
我添加了代码,这样你就知道我的意思了。List是具有click$
属性的对象的数组。该阵列仅映射到CCD_ 9,然后用CCD_。
sub = merge(...list.map(item => item.click$)).subscribe(console.log)