我试图实现无限滚动以在用户向下滚动列表时动态地将项目加载到列表中,但是当我访问 end 和 total 时,它是一样的,我需要检查是否到达最后一个项目然后追加新的列表中的项目。问题是 end 和 total 都是相同的,并且每次都会触发
HTML
<cdk-virtual-scroll-viewport style="height: 300px" itemSize="5" (scrolledIndexChange)="nextBatch($event)">
<li *cdkVirtualFor="let row of auditDetails; let j=index;" style="height: 100px; box-shadow: 0 1px 1px black;">{{j}}</li>
</cdk-virtual-scroll-viewport>
TS
auditDetails = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
@ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;
ngAfterViewInit() { }
nextBatch(currIndex: number, items: any[]) {
const start = this.viewPort.getRenderedRange().start;
const end = this.viewPort.getRenderedRange().end;
const total = this.viewPort.getDataLength();
console.log(`end is ${end} total is ${total}`)
if (end == total) {
console.log("end reached increase page no")
}
}
trackByIdx(i: number) {
return i;
}
Stackblitz 链接 https://stackblitz.com/edit/cdk-infinite-scroll-ufuewv