Angular滚动主机监听器不提供滚动值



在我的app.component.html中,我有这样的设置:

<app-header *ngIf="navbarTop"></app-header>
<mat-drawer-container id="drawer-container">
<mat-drawer mode="over" id="side-drawer" [opened]="isOpen">
<div>
<!-- Sidenav content -->
</div>
</mat-drawer>
<!-- Main content of the site -->
<mat-drawer-content id="scroller" (scroll)="scrollHandler($event)">
<main class="container">
<router-outlet></router-outlet>
</main>
</mat-drawer-content>
</mat-drawer-container>
<app-header *ngIf="!navbarTop"></app-header>

这基本上是一个巨大的mat-drawer为侧页,这样每个页面都可以访问侧菜单,和router-outlet在主抽屉/部分的网站。

我试过把我的(scroll)绑定在mat-drawer,mainrouter-outlet本身,并在mat-drawer-content上拥有它似乎是迄今为止最好的选择。现在,进入实际问题。My .ts里面有这个:

@HostListener('window:scroll', ['$event']) 
scrollHandler(e) {
console.log("scrolled");
console.log(window.scrollY);
console.log(document.body.scrollTop);
}

无论我怎么做,两个控制台日志都返回0,但事件确实触发。我怎么能得到一个实际的scrollly/offsetY/scrollTop/任何值?

多亏了这篇文章,我能够使用e.srcElement.scrollTop解决这个问题。如果有人能解释为什么这个比我尝试过的其他东西更有效,那就太好了,但至少有一个答案。

最新更新