圆圈:window.history.back() 和 location.back()

Circle: window.history.back() and location.back()

在我的 Angular 应用程序中,我有一个视图和一个带有输入表单的编辑视图。 问题是:

如果我使用浏览器的后退按钮 window.history.back() 或 Angular2 once 中的等效 location.back(),它将按预期正常工作。

但是如果我连续(两次)触发浏览器的后退按钮 window.history.back() 或等效的 location.back(),它将开始一个圆圈 - 意味着返回到初始站点。

同一网站的另一个奇怪行为是:

  1. 从视图我用普通的编辑视图 this.router.navigate(['/edit']);
  2. location.back() 返回查看
  3. 我再次进入正常的编辑视图 this.router.navigate(['/edit']);
  4. 现在我要触发3次 location.back() 返回查看。

历史似乎被破坏了。

有人知道问题出在哪里吗?有没有可能跟表格有关?

不要多次导入路由

导出常量路由:ModuleWithProviders = RouterModule.forRoot(routes)

我在从 rc4 迁移到 final 时遇到了同样的问题,以下是对我有用的方法。如 所述,您应该仅使用 RouterModule.forRoot() 方法导出属于主应用程序模块的路由一次。

export const routing: ModuleWithProviders = RouterModule.forRoot(MainModuleRoutes);

但是,如果您在主应用模块中导入了具有自己路由的子模块,则应使用 RouterModule.forChild() 将它们导出为子路由。

export const routing: ModuleWithProviders = RouterModule.forChild(ChildModuleRoutes);