在数组 ngFor 中推送对象

Mal*_*ali 1 arrays typescript angular

我需要将对象推入ngFor但出现错误Property 'push' does not exist on type 'Observable<MyDataType[]>'Stackblitz演示代码

HTML

<div *ngFor='let item of myObservableArray | async'>
    {{item.value}}
</div>
Run Code Online (Sandbox Code Playgroud)

成分

  getData() {
    if (!this.myObservableArray) {
      this.myObservableArray = this.myService.getData();
      this.myObservableArray.push({"id":3, "value":"value_4"});
    }
  }
Run Code Online (Sandbox Code Playgroud)

服务

mydata: MyDataType[] = [
    {"id":1, "value":"value_1"},
    {"id":2, "value":"value_2"},
    {"id":3, "value":"value_3"}
  ];

  getData():Observable<MyDataType[]>
  {
    let data = new Observable<MyDataType[]>(observer => {
          setTimeout(() => {
              observer.next(this.mydata);
          }, 4000);
    });
    return data;
  }
}
Run Code Online (Sandbox Code Playgroud)

pc_*_*der 5

演示我添加了另一种方法来添加或更新服务。

  addOrUpdate(item:MyDataType){
    var elem=this.mydata.find(element=> element.id==item.id);
    if(elem){
      elem.value=item.value;
    }
    else{
      this.mydata.push(item);
    } 
  }
Run Code Online (Sandbox Code Playgroud)

并在组件内部调用它

this.myService.addOrUpdate({"id":3, "value":"value_4"});
Run Code Online (Sandbox Code Playgroud)