Я хотел бы использовать виртуальную прокрутку в моем приложении Angular.Элементы в моем списке являются результатом удаленного поиска.Я хотел бы загружать больше результатов (вызывать следующую страницу) каждый раз, когда достигаю конца прокрутки вниз области просмотра.
Вот мой шаблон:
<div class="container">
<cdk-virtual-scroll-viewport itemSize="100">
<li *cdkVirtualFor="let item of searchResult">{{item}}</li>
</cdk-virtual-scroll-viewport>
</div>
Вот мои попыткизаставить его работать так, как мне нужно:
export class SearchComponent {
@ViewChild(CdkVirtualScrollViewport) virtualScroll: CdkVirtualScrollViewport;
searchPageNumber: number;
searchResults: Array<any>;
constructor(private scrollDispatcher: ScrollDispatcher, private searchService: SearchService) {
this.searchPageNumber = 0;
this.searchResults = [];
}
ngOnInit(): void {
this.nextSearchPage(this.searchPageNumber);
}
ngAfterViewInit(): void {
//this.scrollDispatcher.register(this.scrollable);
//this.scrollDispatcher.scrolled(1000)
// .subscribe((viewport: CdkVirtualScrollViewport) => {
// console.log('scroll triggered', viewport);
// });
this.virtualScroll.renderedRangeStream.subscribe(range => {
console.log('range', range);
console.log('range2', this.virtualScroll.getRenderedRange());
if (this.virtualScroll.getRenderedRange().end % 10 === 0) {
this.nextSearchPage(++this.searchPageNumber);
}
});
}
nextSearchPage(pageNumber: number): void {
this.searchService.getResults(pageNumber).then((pagedResults) => {
this.searchResults = this.searchResults.concat(pageResuls);
});
}
}
Как вы можете видеть, я не могу понять, как вызвать вызов моей функции nextSearchPage
(чтобы загрузить больше результатов), только когда полоса прокрутки достигаетконец текущих отображаемых элементов в списке.
Знаете ли вы, как я могу это сделать?
Документация по угловой прокрутке плохая и в ней отсутствуют примеры, как указано в этой проблеме .