Пагинация AG-Grid дважды запускает вызовы getRows

Я работаю над проектом Angular, используя бесплатную версию AG-Grid для отображения данных. Поскольку в бесплатной версии серверная нумерация недоступна, вместо этого я использую модель бесконечных строк с нумерацией страниц.

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

Не могли бы вы помочь мне исправить это поведение, чтобы избежать дублирования вызовов на серверную часть? или я что-то упускаю из того, как работает сетка?

Ссылка на демо

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
253
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно документу:

 /**
     * 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 был вызван дважды.

Самый простой способ исправить это — пропустить получение данных при изменении размера страницы. И вот мое решение

Другие вопросы по теме

Разбивка на страницы отфильтрованных таблиц в Turbo Frame с использованием Pagy?
Как правильно отображать текущие данные с помощью нумерации страниц в laravel?
Кнопка пагинации Livewire не появилась
Создание Jetpack — загрузка дополнительных данных или разбиения на страницы, LazyVerticalStaggeredGrid/LazyColumn исчезает
Пагинация Firestore: обновленные данные в реальном времени неожиданно перемещаются между страницами
Разбиение текста на страницы в Jetpack Compose
Как динамически обрабатывать отображение номеров страниц с учетом нумерации страниц? : ReactJS
Как настроить ссылку на файлы с разбивкой на страницы в соединителе приложения логики Get Rows(V2) и передать ее через вызов API Azure?
Библиотека подкачки 3 с помощью Jetpack Compose Не вызывает метод загрузки после первоначальной загрузки
Текущая нумерация страниц CPT не работает при изменении количества сообщений на странице