Angular 2+:如何跳到锚点?

时间:2018-04-04 10:02:11

标签: angular angular2-routing angular-routing

我想使用角度路由器跳转/滚动到某个片段(哈希)。该网址正确生成为/#section5,但点击时没有任何结果。

经过大量搜索,我发现很多人(e.g.)有同样的问题,有一些解决方法,但没有适当的解决方法。我希望这是一个基本的核心功能。

以下代码不起作用:

<!-- Link --> 
<a routerLink="/" fragment="section5" routerLinkActive="active">Section 5</a>

<!-- Target -->
<div id="section5">Section 5 here</div>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试scrollIntoView,在组件的构造函数

中添加以下代码
router.events.subscribe(event => {
  if (event instanceof NavigationEnd) {
    const tree = router.parseUrl(router.url);
    if (tree.fragment) {
      const element = document.querySelector("#" + tree.fragment);
      if (element) { element.scrollIntoView(true); }
    }
  }
});