![](/img/trans.png)
[英]How to detect start scrolling with cdk-virtual-scroll-viewport?
[英]How to get triggered on scrolling inside cdk-virtual-scroll-viewport?
我在 Angular 7 中使用虛擬滾動。我創建了一個CdkVirtualScrollViewport
,我會為每個滾動事件添加一個監聽器。 我的意思是我希望在該視口內滾動時收到通知。
我試圖在我的組件中注入scrollDispatcher
,但我看到scrollDispatcher
scrolled()
是在整個組件上滾動時觸發的,然后我發現它綁定到組件而不是僅僅綁定到CdkVirtualScrollViewport
。
這是我的代碼:
@ViewChild(CdkVirtualScrollViewport) virtualScroll: CdkVirtualScrollViewport;
items: Array<any>;
constructor(private scrollDispatcher: ScrollDispatcher, private cd: ChangeDetectorRef) {
this.items = [];
}
ngOnInit(): void {
for (let i = 0; i < 100; i++) {
this.items.push(i);
}
}
ngAfterViewInit(): void {
this.scrollDispatcher.scrolled()
.subscribe(event => {
console.log('scrolled');
});
}
正如你所看到的CdkVirtualScrollViewport
是我組件中的一個子元素:
<div class="header">
{{header}}
</div>
<div class="container">
<cdk-virtual-scroll-viewport itemSize="4" class='example-viewport'>
<li *cdkVirtualFor="let item of items" class='example-item' >{{item}}</li>
</cdk-virtual-scroll-viewport>
</div>
<div class="footer">
{{footer}}
</div>
這是完整的代碼: https : //stackblitz.com/edit/angular7-scroll-dispatcher
也許我可以使用scrollDispatcher
register()
方法......但我應該將CdkScrollable
傳遞給它,而不是我的是CdkVirtualScrollViewport
元素。
那么,我怎樣才能只聽我的虛擬滾動視口滾動事件呢?
在CdkVirtualScrollViewport
監聽滾動事件的CdkVirtualScrollViewport
是使用elementScrolled()
方法:
this.virtualScroll.elementScrolled()
.subscribe(event => {
console.log('scrolled');
});
所以不需要注入scrollDispatcher
並注冊任何元素......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.