角度6 - 当路线改变时保持滚动位置

chi*_*565 8 angular angular6

以前的行为:

导航到另一条路线时,更改路线或导航路径不会影响滚动位置.即内容可以在没有滚动位置改变的情况下改变.

目前的行为:

更改路线将使您回到页面顶部.

迄今采取的行动:

测试了当前和新的Angular 6项目

这是一个错误吗?功能改变?或者是否有我缺少的参数.

chi*_*565 15

似乎将'scrollPositionRestoration'设置为禁用修复它

RouterModule.forRoot(
  appRoutes,
  { scrollPositionRestoration: 'disabled' } // <-- HERE
)
Run Code Online (Sandbox Code Playgroud)

请参阅https://angular.io/api/router/ExtraOptions

  • 根据该链接,“禁用”是默认设置,显式添加此选项会执行哪些尚未完成的操作? (5认同)

Xin*_*nan 7

路径改变后滚动位置不会改变。这始终是 Angular 的默认行为。

\n\n

然而,许多开发人员正在手动执行 awindow.scroll(0, 0)来覆盖此行为。

\n\n

我建议您检查代码中是否有某些内容正在执行此操作。因为它可能是新安装的第 3 方库或其他开发人员的代码提交。

\n\n

另外,根据以下官方文章:

\n\n

Angular v6.1 现已推出\xe2\x80\x8a\xe2\x80\x94\xe2\x80\x8aTypeScript 2.9、滚动定位等

\n\n

有一个新选项可以通过使用来保持原始滚动位置

\n\n

RouterModule.forRoot(routes, {scrollPositionRestoration: \'enabled\'})

\n\n

我相信这与您提出的问题没有直接关系,但只是一些值得了解的事情。

\n