angular - Angular 6如何在用户滚动到div id时将导航栏菜单设置为活动状态
问题描述
滚动到 div 时如何获取 div id。
我的 Angular 6 应用程序是一个页面应用程序,当用户单击导航栏时,页面将滑动到 div id(我使用 ngx-scroll-to)。
当用户单击导航栏菜单时,我已经完成了它会滑动到 div 并将类设置为活动状态。
我的问题是当用户手动滚动时,如何在导航栏菜单到达 div id 时将其设置为活动状态。
<li class="nav-item" [ngClass]="activeRoute=='home' ? 'active' : ''">
<a class="nav-link " (click)="active('home')" onclick="return false;" href="#" [ngx-scroll-to]="'#home'">Home</a>
</li>
<li class="nav-item" [ngClass]="activeRoute=='services' ? 'active' : ''">
<a class="nav-link" (click)="active('services')" onclick="return false;" href="#" [ngx-scroll-to]="'#services'">Services</a>
</li>
解决方案
您可以使用@HostListner 的强大功能。从角度。
@HostListener('window:scroll', ['$event'])
scrollHandler(event) {
console.debug("Scroll Event");
}
并在模板中
<div (scroll)="scrollHandler($event)" >
<li class="nav-item" [ngClass]="activeRoute=='home' ? 'active' : ''">
<a class="nav-link " (click)="active('home')" onclick="return false;" href="#" [ngx-scroll-to]="'#home'">Home</a>
</li>
<li class="nav-item" [ngClass]="activeRoute=='services' ? 'active' : ''">
<a class="nav-link" (click)="active('services')" onclick="return false;" href="#" [ngx-scroll-to]="'#services'">Services</a>
</li>
....
</div>
请注意,上面的 HostListener 将调用我们提到的窗口滚动函数 ('window:scroll') 如果您想在 div 滚动上调用此函数,只需将 ('scroll') 添加到 HostListener
推荐阅读
- tcp - Envoy 的逻辑 DNS 连接管理
- java - 冲突的jetified-kotlin-reflect依赖
- python - torchtext BucketIterator 中的 batch_size 不匹配
- python - 用变量名保存目录
- javascript - 如何使用queryselector javascript查找特定数据集(data-*)的innerText或textContent?
- python - 如何在 Celery 任务执行期间强制执行记录器格式?
- neo4j - 是否有能力按时间限制密码查询结果?
- python - python-slugify 和 awesome-slugify 之间的冲突
- php - 即使没有可执行权限也执行php文件
- laravel - Laravel 视图斜线表示法不起作用