Показать таблицу (сетку ag) после получения всех данных - PullRequest
0 голосов
/ 02 октября 2018

У меня есть таблица, которую я хочу отобразить, только когда this.rowData полностью заполнен (и, таким образом, все данные извлекаются).Проблема в том, что я заполняю его двумя http-вызовами, вот так:

ngOnInit() {
    this.getTasks(this.item.availableTasks$); // This are the first data I want to fetch
    this.getTasks(this.item.myTasks$); // This are the second data I want to fetch (now this.rowData have all the datas I need)

  }

  getTasks(taskType): void {
    // taskType is a replaySubject that returns an Observable
    taskType.subscribe( 
      (tasksObservable: Observable<any>) => {
        tasksObservable.subscribe(
          (tasks: any) => {
            for (const task of tasks) {
              this.rowData.push(task ); // This is where i push datas into my array
            }
          }
        );
      }
    );
  }

Здесь я вызываю getTasks два раза, чтобы заполнить мой массив rowData.Когда консольный логин rowData в ngOnInit отображает все мои данные правильно.Но в результате я вижу только данные моего первого вызова.

Вот таблица:

<ag-grid-angular
    *ngIf="rowData.length != 0"
    class="col-12"
    style="height: 500px;" 
    [enableSorting]="true"
    [enableFilter]="true"
    [enableColResize]="true"
    [pagination]="true"
    [paginationPageSize]="15"
    [rowSelection]="rowSelection"
    (gridReady)="onGridReady($event)"
    class="ag-theme-balham"
    [rowData]="rowData" 
    [columnDefs]="columnDefs"
    [defaultColDef]="defaultColDef"
    >
</ag-grid-angular>

Как мне дождаться окончания двух вызовов, прежде чем отобразить таблицу?Дополнительный вопрос: мой метод getTasks немного запутан из-за двойной подписки, как мне его убрать?

Спасибо!

1 Ответ

0 голосов
/ 02 октября 2018

Обратите внимание на неизменность в Angular 2+, см. https://angular -2-training-book.rangle.io / handout / immutable / what_is_immutability.html .

Вы должнывыдвигать новые элементы на this.rowData с помощью:

this.rowData = [
  ...this.rowData,
  task
];

Метод this.rowData.push() не учитывает шаблон неизменности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...