Я работаю над проектом Angular, используя бесплатную версию AG-Grid для отображения данных. Поскольку в бесплатной версии серверная нумерация недоступна, вместо этого я использую модель бесконечных строк с нумерацией страниц.
В приведенной ниже демонстрации у меня есть макет сервиса, который имитирует получение данных из серверной части. Метод getData (серверная часть) ожидает смещение и ограничение (размер страницы). Насколько я понимаю, когда я меняю размер страницы в пользовательском интерфейсе, мне также нужно программно обновить параметры сетки (размеры страниц и блоков кэша). Однако когда я это делаю, сетка дважды запускает функцию getRows. Эта проблема не возникает при переходе на следующую или предыдущую страницу.
Не могли бы вы помочь мне исправить это поведение, чтобы избежать дублирования вызовов на серверную часть? или я что-то упускаю из того, как работает сетка?





Согласно документу:
/**
* Triggered every time the paging state changes. Some of the most common scenarios for this event to be triggered are:
*
* - The page size changes.
* - The current shown page is changed.
* - New data is loaded onto the grid.
*/
onPaginationChanged?(event: PaginationChangedEvent<TData>): void;
Первый вызов происходит при изменении размера страницы. Внутри функции onPaginationChanged GridApi.updateGridOptions() обновляет данные (вы можете найти логику внутри этой функции в репозитории GitHub ), что также запускает onPaginationChanged, и GridApi.updateGridOptions() вызывается второй раз. Однако на этот раз размер страницы не меняется, поэтому мы видим, что createDataSource был вызван дважды.
Самый простой способ исправить это — пропустить получение данных при изменении размера страницы. И вот мое решение