typescript - Angular 7.x.x 滚动到片段的最简单方法?

标签 typescript scroll angular7 angular-router angular-routerlink

在过去的两天里,我一直在 internetz 上挖掘有关使用 angular 将片段滚动到 View 中的信息。

假设我们有一个静态网页,其中包含一堆充当片段的 id-s。并有一个侧边导航栏,用于通过链接浏览片段。

我试过 Router anchorScroll 简单地添加 this该模块对我没有任何作用。它只为您提供 URL 中的片段,但没有滚动。

我试过 viewportScroller。这样做的主要问题是它不是第一次工作(例如:你被重定向到这个带有所需片段的静态页面,但是滚动没有发生,如果你一直在同一个页面上并重复这个过程,如果您单击与您访问的网址相同的侧面导航栏上的链接,它会起作用: ([foo]/[bar]#[fragment]) 它也不起作用,因为没有导航发生变化。

用于路由器的额外选项:

const routerOptions: ExtraOptions = {
  useHash: false,
  anchorScrolling: 'enabled',
  scrollPositionRestoration: 'enabled',
  onSameUrlNavigation: 'reload'
};

ps.: useHash: true 不会改变任何东西。

ngOnInit 中的 viewportScroller:

this.viewportScroller.setOffset([0, 64]);
this.viewportScroller.setHistoryScrollRestoration('auto');

this.router.events.pipe(filter(element => element instanceof Scroll)).subscribe((element: any) => {
  console.log(element)
  this.viewportScroller.scrollToAnchor(element.anchor);
});

滚动到片段的最简单方法是什么!!!使用这个:

ngOnInit() {
  this.route.fragment.subscribe((fragment: string) => { 
    if (fragment && document.getElementById(fragment) != null) {
      document.getElementById(fragment).scrollIntoView({ behavior: "smooth" });
    }
  });
}

b/c 它每次都有效,但它不是 TS,因为我们在公司的项目中使用 TS。

请帮帮我

最佳答案

我遇到了同样的问题。看看这个 solution by Ben Nadel .该解决方案适用于 Angular 7.X。您可以配置 RouterModule 来处理 anchor 滚动,甚至可以在带有片段的 anchor 上多次单击。这是您需要的代码:

 @NgModule({
  imports: [RouterModule.forRoot(routes,
            {
              anchorScrolling: 'enabled',
              onSameUrlNavigation: 'reload',
              scrollPositionRestoration: 'enabled'
            })],
  exports: [RouterModule]
})
export class AppRoutingModule { }

希望这对您有所帮助。

关于typescript - Angular 7.x.x 滚动到片段的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54574986/

相关文章:

css溢出滚动表格单元格宽度为:auto or width:100%

jquery - 滚动上的动画进度条

delphi - 当鼠标不在鼠标上方时,如何防止焦点控件滚动?

javascript - 如何检测 HTML 绑定(bind)中加载的所有图像?

angular - 将 NgRx 和 Angular 升级到版本 7 后无法编译

typescript - 为什么 jwtService 未定义?

validation - 将输入类型编号限制为 Angular 2 中的小数点后 2 位

javascript - fat-arrow 函数返回的剩余运算符

javascript - 动态图像路径未显示在 Angular 7 的 [style.background-image] 属性中

javascript - 如何在TypeScript定义中定义ReactFunctionalComponent的返回类型