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

时间:2016-10-14 09:45:48

标签: angular angular2-routing browser-history

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

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

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

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

  1. 从视图中我可以正常编辑视图 this.router.navigate([ '/编辑']);
  2. location.back()返回查看
  3. 我再次进入正常的编辑视图     this.router.navigate([ '/编辑']);
  4. 现在我必须触发三次     location.back()返回查看。
  5. 历史似乎已被破坏。

    是否有人知道问题可能是什么。是否有可能与表格相关?

2 个答案:

答案 0 :(得分:1)

请勿多次导入路由

export const routing:ModuleWithProviders = RouterModule.forRoot(routes)

答案 1 :(得分:0)

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

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

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

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