利用这里的信息:Angular 2 change detection with observables我的Observable正常工作以进行初始加载。但是,当我添加一个新项目时,现有项目将被清除,只有新添加的项目和一个"空白"项目已离开。
这是我的添加项目功能:
public add(v : any){
this.db.insert(v,
(e, nDoc) => {
if(!e){
this.ngZone.run(() => this.sub.next([this.sub.getValue(), nDoc]));
} else{
console.log(e);
}})
}
项目正确地添加到数据库中(使用nedb),但显示UI中项目的绑定显示空项目和新添加的项目以及每个项目的复选框。
这是我的约束力:
<ul>
<li *ngFor = 'let todo of items | async'>
<input type='checkbox' title='{{todo.description}}' /><span class='todoTitle' title='{{todo.description}}'>{{todo.title}}</span>
</li>
</ul>
这是我的订阅和添加新项目的调用:
this.items = this._todoService.items;
this.items.subscribe({
next: x => console.log("got value:", x),
error: e => console.error("observable error" , e),
complete: () => console.log("done")
});
setTimeout(() => {
this._todoService.add({"title":"NEW","priority":1,"status":"open","_id":new Date().getTime(),"description":""});
}, 3000);
在控制台中,next
方法记录got value [Array[6], Object]
,因此服务似乎不返回我的项目的单个数组,而是返回现有项目的新数组(表示为UI中的&#34;空白&#34;然后是新添加的项目。
如何让它只是所有项目的单个数组,以便正确显示?
感谢。