Я столкнулся с ошибкой, которую я считаю ошибкой, при попытке объединить функциональность виртуальной прокрутки и фильтрации в компоненте таблицы PrimeNG.
При включении обеих функций и попытке фильтрации визуализированные данные не отфильтровываются, но мне удалось выполнить отладку с помощью вызываемых функций фильтра primeng, и я вижу, что базовая часть действительно фильтруется, я подозреваю, что это что-то больше связано с тем, как экземпляр виртуального скроллера CDK каким-то образом используется внутри.
Воспроизводимая демонстрация - https://stackblitz.com/edit/primeng9-table-virtualscroll-with-filtering?file=src/app/app.component.html
Используя приведенный выше URL-адрес, просто отфильтруйте любой из столбцов возвращаемых данных, например торговая марка.
В этой первой демонстрации используется виртуальная прокрутка, а также, пожалуйста, наблюдайте за выводом консоли во время фильтрации, поскольку я фиксирую здесь результаты события таблицы onFilter и подсчитываю длину совпадающих отфильтрованных записей для входного фильтруемого поискового запроса. Вы увидите, как результаты четко сопоставляются и возвращаются, но строки в таблице просто никогда не фильтруются соответствующим образом, всегда отображаются исходные обработанные строки.
Чтобы еще раз доказать мое подозрение, что я думаю, что это так или иначе является ошибкой использования виртуального скроллера CDK в primeNG, вы можете удалить следующие два атрибута таблицы в демонстрации stackblitz:
[virtualScroll]="true" [virtualRowHeight]="34"
после их удаления и отключения виртуальной прокрутки функция фильтрации будет работать, как и ожидалось, с точки зрения отображения только результатов сопоставления в таблице, но, конечно, теряет преимущество в производительности, связанное с включенной виртуальной прокруткой.
Итак, я спрашиваю, как я могу получить и то, и другое здесь?
Кстати - да, я использую PrimeNG 9, а 10 - последняя, но по разным причинам проект, в котором я работаю, все еще находится на 9 и будет работать в течение некоторого времени, поэтому я ищу исправление v9, если возможно, здесь.
Спасибо за ваше время!