Angular2可观察订阅未正确更新

时间:2017-01-12 16:27:18

标签: angular angular2-observables

利用这里的信息: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;然后是新添加的项目。

如何让它只是所有项目的单个数组,以便正确显示?

感谢。

0 个答案:

没有答案