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

时间:2018-08-16 16:34:53

标签: angular angular6

以前的行为:

在导航到另一条路线时,更改路线或导航路径不会影响滚动位置。也就是说,内容可以更改,而滚动位置不会更改。

当前行为:

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

到目前为止已完成的操作:

在最新和新的Angular 6项目中进行了测试

这是一个错误吗?功能改变?还是我缺少一个参数。

4 个答案:

答案 0 :(得分:11)

好像将'scrollPositionRestoration'设置为禁用可修复

#include <QApplication>
#include "mainwindow.h"

int main(int argc, char* argv[]) {
  QApplication a(argc, argv);
  MainWindow w;
  w.show();

  B* b = new B();
  QObject::connect(b, SIGNAL(update_signal(bool, int)), &w, SLOT(m(bool, int)),
                   Qt::QueuedConnection);

  b->handleEvent();
  return a.exec();
}

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

答案 1 :(得分:2)

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

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

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

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

Angular v6.1 Now Available — TypeScript 2.9, Scroll Positioning, and more

有一个新选项可以通过使用

来保持原始滚动位置

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

我相信这与您所提出的问题没有直接关系,只是一些好消息。

答案 2 :(得分:0)

如果它不适用于ScrollPositionRestoration:“ enabled”配置,请为容器使用[scrollTop]属性绑定并分配值

答案 3 :(得分:0)

如果滚动恢复不起作用,请创建一个服务,该服务可在更改该路线时更新当前滚动位置,并将滚动位置分配给ngOnit上的新滚动组件的服务滚动位置,然后重置服务滚动。