У меня есть таблица, которую я хочу отобразить, только когда 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
немного запутан из-за двойной подписки, как мне его убрать?
Спасибо!