【问题标题】:How to make Angular router links disable scrolling to the top of the page?如何使 Angular 路由器链接禁用滚动到页面顶部?
【发布时间】:2020-07-26 11:18:04
【问题描述】:

如何在单击 Angular 路由器链接时禁用滚动到顶部? 我有三个子路由,我希望在同一个父页面之间导航,并且当用户单击这些链接时,我不希望应用程序在页面顶部滚动。 所以我希望页面保持在单击链接之前完全相同的位置。 有没有办法做到这一点?

【问题讨论】:

    标签: angular routing router


    【解决方案1】:

    将此添加到您导入RoutingModule.forRoot()的模块中

    imports: [RouterModule.forRoot(routes, { scrollPositionRestoration: 'disabled' })],
    

    这将禁用整个应用中路由的滚动重置。如果您需要更多控制,您可以按照这样的模板实现自定义逻辑:

    class AppModule {
      constructor(router: Router, viewportScroller: ViewportScroller) {
       router.events.pipe(
         filter((e: Event): e is Scroll => e instanceof Scroll)
       ).subscribe(e => {
         if (e.position) {
           // backward navigation
           viewportScroller.scrollToPosition(e.position);
         } else if (e.anchor) {
           // anchor navigation
           viewportScroller.scrollToAnchor(e.anchor);
         } else {
           // forward navigation
           viewportScroller.scrollToPosition([0, 0]);
         }
       });
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      • 2014-06-19
      • 2018-06-24
      • 2011-05-11
      • 2010-11-11
      • 1970-01-01
      相关资源
      最近更新 更多