[英]Angular Rxjs Observable items count doubles on subscribe
我正在使用數組創建一個可觀察對象。 當我調用訂閱方法時,其長度變為兩倍。
即。 如果數組在訂閱后有3個項目,則通過復制相同項目變成6個。
我還使用異步管道來列出html中的項目。
請檢查插栓示例
@Component({
selector: 'my-app',
template: `
<div>
<ul>
<li *ngFor="let data of obs|async">
{{data.name}}
</li>
</ul>
</div>
`
})
export class App implements OnInit{
obs: Observable<any>;
arr = [{
name: 'name1',
age: 26
}, {
name: 'name2',
age: 27
}, {
name: 'name3',
age: 28
}];
constructor() {
}
ngOnInit() {
this.obs = Observable.from(this.arr).toArray()
this.obs.subscribe(res => {
console.log(res)
})
}
}
輸出:
在JSFiddle中,這對我來說很好用: https ://jsfiddle.net/dcuLggwa/1/
我不確定為什么要使用: this.obs = Observable.from(this.arr).toArray()
嗎? 您可以使用: this.obs = Observable.of(this.arr)
,導致相同的行為: https : this.obs = Observable.of(this.arr)
我已經更新了plunkr以使用Observable.of
而不是Observable.from(...).toArray()
,它的工作正常: https ://plnkr.co/edit/vaMK6G5AxCSs2kCIJ2h8?p=preview
Observable.from(...).toArray()
和Observable.of
之間的區別:
Observable.from
發射數組中的每個項目, toArray
等待直到observable完成,然后將所有項目(分別發射)作為數組發射。 因此,從根本上講,您從一個數組開始,將其拆分為單獨的項目,然后再次將其組合成一個數組。
Observable.of
創建一個Observable,它發出要傳遞給of()
運算符的項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.