如何滚动到我的角度页面中的锚点

时间:2019-01-14 11:45:48

标签: html angular typescript anchor

我想在我的有角页面中创建锚点,但是它不起作用,我也不知道为什么。

我的html组件:​​

<h1 id="choose_package">Step 1 : choose a package</h1>
<div>Some elements</div>
<a [href]="choose_package">test</a>

但是它返回我为null,然后转到404页。

编辑(现在我可以滚动了,但是并没有一点一点完成):

this.router.events.pipe(filter(e => e instanceof Scroll)).subscribe((e: any) => {
    if (e.position) {
      this.viewportScroller.scrollToPosition(e.position);
    } else if (e.anchor) {
      this.viewportScroller.scrollToAnchor(e.anchor);
    } else {
      this.viewportScroller.scrollToPosition([0, 0]);
    }
  ;
});

2 个答案:

答案 0 :(得分:0)

默认情况下,v6.1.0禁用“锚定滚动”。  在路线配置中启用锚点滚动

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

然后使用片段

<h1 id="choose_package">Step 1 : choose a package for your license</h1>
<div>Some elements</div>
<a [fragment]="choose_package">test</a>

答案 1 :(得分:0)

使用Fragment来完成。

<h1 id="choose_package">
Step 1 : choose a package for your license
</h1>
<div>Some elements</div>
<a [fragment]="choose_package">test</a>

它将重定向到同一页面上的“ choose_package”。

您还需要在rootModule中定义anchorScrolling

...
@NgModule({
  imports: [
    RouterModule.forRoot(routes, {
      anchorScrolling: 'enabled',
    })
  ]
})
...
相关问题