【问题标题】:Angular 11: Change scroll-behavior only for scrollPositionRestorationAngular 11:仅针对 scrollPositionRestoration 更改滚动行为
【发布时间】:2021-09-30 02:26:13
【问题描述】:
当您转到新路线时,我正在尝试将角度滚动到页面顶部。
app-routing 中的 scrollPositionRestoration: 'top' 完成此任务。但是,这个滚动是根据我的主 css 文件中的scroll-behavior: smooth; 进行动画处理的。
这个scroll-behavior 对我在应用程序中使用ViewportScroller 很重要。但是,严格来说,在加载新页面的情况下,我认为动画滚动会让人迷失方向并且没有必要。
有没有什么方法可以在加载新路由时禁用此行为,同时在我的应用程序的其他地方维护它?
【问题讨论】:
标签:
javascript
angular
angular11
【解决方案1】:
我找到了一个丑陋的解决方案,但它有效。
只需将 routerOptions 的属性 scrollPositionRestoration 设置为顶部:const routerOptions: ExtraOptions = { scrollPositionRestoration: 'top' };。
然后在你要去的组件上,将document.querySelector('html')!.style.scrollBehavior = 'auto';添加到构造函数体中,将document.querySelector('html')!.style.scrollBehavior = 'smooth';添加到ngOnInit()方法体中。
现在,当您从另一个组件转到该组件时,您的滚动条应该立即位于页面顶部(没有平滑效果)。如果您使用了片段,那么您将转到具有平滑效果的关联锚点。