angular - 在我的 Angular Nebular 应用程序中,Typescript 中没有自动滚动功能
问题描述
我有一个问题,在 router.navigatedByUrl("") 之后,我想再次滚动到顶部。
我尝试了以下所有方法都不起作用:
- window.scroll(0,0);
- document.body.scrollTop = 0;
- document.querySelector('body').scrollTo(0,0);
- NbLayoutScrollService.scrollTo(0,0); // 用于滚动的星云服务
- viewportScroller.scrollToPosition([0, 0]);
- document.querySelector().scrollTo(0,0); /* 因为我读到 Angular 8 中的材质存在问题,其中滚动挂钩必须位于与正文不同的 html 元素上 */
我在 this.router.events.subscribe((evt) => { ... }; 中尝试了这些方法,并且还使用了以下方法:
<router-outlet (activate)="onActivate($event)"></router-outlet>
onActivate(event) {
...
}
路由器事件甚至没有触发,但第二种方法触发但滚动方法不起作用。
我收到警告“在路由激活期间没有实例化路由器出口。URL 段:”,这可能是滚动不起作用的原因吗?
该应用程序在 Angular 版本 10.1.1 上运行,我很乐意就如何研究此问题提出任何建议,但目前我处于死胡同。
解决方案
您可以在 onActivate 方法中使用以下代码返回顶部
onActivate(event) {
window.setInterval(function() {
var pos = window.pageYOffset;
if ( pos > 0 ) {
window.scrollTo( 0, pos - 20 ); // how far to scroll on each step
} else {
window.clearInterval( scrollToTop );
}
}, 16);
}
推荐阅读
- c# - 在 .Net Core 3.1 中创建一个 HttpRequest 实例
- c - 我的选择排序很奇怪(C 中的代码)
- unit-testing - 依次运行 Flutter Package 单元测试
- dart - 通过声明父对象 Dart Flutter 从继承类访问变量
- sql - 为引用 SQL Plus 中不同表的多个主键的外键添加约束?
- reactjs - 将包含 React 类代码的字符串转换为可用组件?
- shell - 仅使用 git bash 的 ssh 公钥共享
- python - AttributeError:“Read_csv”对象没有属性“datetime_array”
- character-encoding - 为什么 CP850 是 Windows 10 终端中的默认编码?
- mongodb - MongoDB 辅助副本集与主副本同步失败(在报告副本中)