我相当确定这与范围问题有关,但是我在网上找不到任何相关信息。我有一项服务,该服务从包含要更新rowData变量的数据的API返回基本的Observable。

MyService.ts

 fetchDummyData(): Observable<DummyResponse[]> {
    return this.http.get<DummyResponse[]>('***SOME_API***');
 }


我的组件

如果我尝试在此处向rowData添加数据,则网格不会更新

rowData = [];
/////////////
////////////Other stuff

this.myService.fetchDummyData().subscribe(
  data => {
    for (let i = 0; i < data.length; i++) {
      this.rowData.push(
        {
          idType: 'ID Type ' + (i + 1),
          description: 'adfasdf'
        }
      )
      //This log prints the correct thing, but rowData remains empty outside the loop
      console.log('Row id: ' + this.rowData[i].idType);
    }
  }
)


但是,如果我在上面的订阅调用之后添加此代码,它将起作用。

rowData = [];
/////////////
////////////Other stuff

this.myService.fetchDummyData().subscribe(
  data => {
    for (let i = 0; i < data.length; i++) {
        //Do Nothing
    }
  }
)

//This actually updates the rowData
this.rowData.push(
    {
      idType: 'ID Type ' + (i + 1),
      description: 'adfasdf'
    }
  )


为什么rowData不能在订阅调用中全局更新?

最佳答案

您可以在订阅服务器内部使用api.setRowData(newData)

this.myService.fetchDummyData().subscribe(
    data => {
    let rows = [];
    for (let i = 0; i < data.length; i++) {
        rows.push({
            idType: 'ID Type ' + (i + 1),
            description: 'adfasdf'
        });
    }
    this.gridApi.setRowData(rows);
  }
)

10-08 20:06