角度路由器和后退按钮

时间:2017-12-18 12:51:21

标签: angular user-interface angular2-routing back-button

我有一个Angular 4应用程序,使用来自@ angular / router

的路由器进行导航

导航结构非常简单,包括:

/products
/products/:productId
/products/:productId/edit-details
/products/:productId/edit-images
etc

这一切都与路由器模块完美配合。

我得到的问题是在保存数据后使用浏览器后退按钮 - 给出以下情形:

  1. 用户在" / products / 5"屏
  2. 用户转到" / products / 5 / edit-details"屏
  3. 用户进行更改并点击"保存"
  4. App保存数据并将用户导航回" / products / 5"屏
  5. 执行上述操作后,单击“浏览器返回”按钮。我认为大多数用户都希望使用Back按钮将它们提升到"产品列表"但它实际上会将它们带回" / products / 5 / edit-details"因为那是他们所在的最后一条路线。

    这可能是网站与单页应用程序中预期行为之间的一点冲突。 SPA中的外观更像是应用程序,而不是传统的网站。在大多数应用程序中,设备后退按钮用作"向上/向后"按钮(例如,在我的手机上使用您获得的联系人应用程序:联系人列表 - >联系人详细信息 - >编辑联系人 - >保存[带您联系详细信息] - >按后退按钮将用户带到联系人列表不要回到编辑联系人屏幕。所以用户已经接受过教育,希望从他们设备上的后退按钮获得这种行为。

    我已经尝试过使用:

    this.location.back();
    

    而不是

    this.router.navigate(['../'], { relativeTo: this.route });
    

    用户点击保存后

    这部分实现了我想要的东西,但这为"转发"留下了不必要的选择。按钮 - 绕过路由器模块似乎有点不对。

    删除后,此行为尤其令人讨厌: 例如如果你去" / products /:productId / edit-images /:imageId"并删除图像,然后不存在的路线保留在后退历史

    我也尝试过使用" skipLocationChange"但是,这并没有达到预期的效果,就好像我在链接中使用skipLocationChange来进入"编辑细节"屏幕和用户然后按下后退按钮,然后绕过:productId屏幕,直接进入" / products"列表

    有什么建议吗?

0 个答案:

没有答案
相关问题