Я нахожу разные образцы для VirtualScrollViewPort , но со всеми у меня возникает проблема, как их использовать в реальной жизни.Образцы загружают все данные сразу с сервера - но поскольку они слишком большие, я хочу загрузить их по отдельности.Мои основные требования:
- Маска поиска - пользователь вводит некоторые данные
- Отображение индикатора выполнения ...
- Запрос поиска на сервере
- Если результат не найден ==> отобразить сообщение
- Если что-то найдено ==> отобразить первые n (= 10) пунктов
- После того, как пользователь прокрутит вниз и только, например, 5 пунктовосталось ==> загрузить дополнительно 10 пунктов
- продолжить с 5.
- , если осталось только, например, 3 ==> завершить прокрутку
Я уже попробовал подход из раздела Specifying data
- но там мне не удается распознать, что данные не загружены, и я не могу запустить представление - особенно когда пользователь сбрасывает содержимое.
Я также пытался с
<cdk-virtual-scroll-viewport itemSize="itemHeight" (scrolledIndexChange)="nextBatch($event,(resultList[resultList.length-1].total) )"
class="scroll-container">
<div *cdkVirtualFor="let search of resultList" class="card-item" >
, который работает для первых требований, но, в конце концов, с ошибкой scrolledIndexChange
срабатывает только на самый первый элемент в списке.Я понятия не имею, как отслеживать, если пользователь уже отображает пункт 6 (который будет загружать дополнительные данные).На странице API Я не вижу никаких @Output()
рядом с scrolledIndexChange
.
Нет подсказок, как правильно отслеживать события?
ОБНОВЛЕНИЕ Первой проблемой, которую я выяснил, был неправильный синтаксис установки высоты, т. Е. [itemSize]="itemHeight"
- подходящий синтаксис, в противном случае он всегда остается равным нулю ==> все элементы отображаются!