Я заполняю таблицу, связывая массив с ngFor
в шаблоне.Angular 2 уведомляет, когда http-запрос завершен
Однако, поскольку массив заполняется асинхронно из HTTP-запроса, я замечаю небольшую задержку рендеринга, когда новые данные загружаются в массив с удаленного сервера, что вызывает «мигание», в то время как таблица повторно заселяется.
Это не происходит, если я локально заполняю массив, поэтому я предполагаю, что проблема заключается в том, что по мере того, как каждый элемент загружается в массив из наблюдаемого, таблица обновляется.
Я хотел бы подождать, пока данные будут полностью загружены до того, как они будут отображены в шаблоне. Подход, который я пытался, - загрузить данные в массив temp, получить уведомление, когда массив temp полностью заполнен, а затем добавить его к массиву, связанному с шаблоном.
Я считаю, что третий параметр подписки должен что-то сделать, поэтому я попытался использовать это. См. Ниже ...
this.dataService.callApi()
.subscribe(
response => this.arrayTemp = response.content,
error => this.response = error.text(),
() => this.array = arrayTemp
);
Однако, это не работает, как я ожидал, и я все еще вижу проблему рендеринга. Есть идеи? Спасибо.
Как вы визуализируете стол? С '* ngFor'? – rinukkusu
'Http.get()' в настоящее время выполняет только одно событие, поэтому использование 1-го или 3-го обратного вызова обычно не имеет значения. –
Вы можете просто добавить 'do (...)' like this.dataService.callApi(). Do (value => console.log (value)). Subscribe (...) 'и вы увидите, что получает (вам нужно импортировать 'do') –