AgGrid rowData не обновляется внутри вызова «подписка» на наблюдаемый объект - PullRequest
0 голосов
/ 03 июля 2018

Я вполне уверен, что это как-то связано с проблемой объема, но я не могу найти в Интернете ничего об этом. У меня есть служба, которая возвращает базовое Observable из API, содержащего данные, с которыми я хочу обновить переменную rowData.

MyService.ts

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

MyComponent

Если я попытаюсь добавить данные в 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 не обновляется глобально в вызове подписки?

1 Ответ

0 голосов
/ 16 сентября 2018

Вы можете использовать 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);
  }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...