我正在创建一个实现此目的的流:
ngFor
这就是我所拥有的:
this.subscription = this.http.get('httpService')
.switchMap(httpResult => this.socket.get('socketEvent')
.scan((data, deltas) => {
_.each(deltas, function (item) {
switch (item.type) {
case 'a':
data.a_list[item.id].value = item.val;
break;
case 'b':
data.b_cells[item.id].value = item.val;
break;
}
});
return data;
}, httpResult)
.startWith(httpResult)
)
//manipulates same object as scan operator?
.map(data => Object.keys(data.a_list).map(k => data[k]))
.subscribe(data => {
this.data = data;
});
模板:
<div *ngFor='let item of data'>{{ item }}</div>
第一次工作正常,但在scan
运算符内的第二个套接字事件中,数据已转换为数组。似乎。map
运算符正在操作scan
运算符所在的同一对象。这是正确的吗?
我总是认为scan
返回了一个新对象而不是引用,我认为这是在这里发生的事情。
如果是这种情况,我如何将流的输出中的嵌套对象转换为数组并仍然使用scan
?