Angular 角度2/4防止浏览器后退按钮导航

Angular 角度2/4防止浏览器后退按钮导航,angular,Angular,我正在构建的应用程序的一部分是一个多步骤表单/应用流,我需要防止用户在某些路由上返回到上一步。最好的方法是什么 我遇到了很多问题,用canDeactivate解决了这个问题,但这些基本上只是警告用户,回去会让你丢失信息() 如果用户点击“浏览器后退”按钮,如何停止角路由器的路由。或者,这是错误的设计模式,我应该以不同的方式对待向后导航吗 这是一个可以接受的解决方案吗?在要防止向后导航的组件上,将其添加到ngonInit history.pushState(null, null, location

我正在构建的应用程序的一部分是一个多步骤表单/应用流,我需要防止用户在某些路由上返回到上一步。最好的方法是什么

我遇到了很多问题,用canDeactivate解决了这个问题,但这些基本上只是警告用户,回去会让你丢失信息()

如果用户点击“浏览器后退”按钮,如何停止角路由器的路由。或者,这是错误的设计模式,我应该以不同的方式对待向后导航吗

这是一个可以接受的解决方案吗?在要防止向后导航的组件上,将其添加到ngonInit

history.pushState(null, null, location.href);
    window.onpopstate = function(event) {
     history.go(1);
};

我认为这更多的是用户体验问题,而不是技术问题,你应该询问用户他们想要哪个选项。但是你不应该强迫用户做一些事情(在很多情况下)。你的责任只是警告他们后果,而不是选择。例如:“如果你回到过去,这种情况就会发生,你将失去你的改变。”@DanielKalbasi我同意这主要是用户体验的问题。但是,我的一些路线具有自动启动POST或PUT的组件。如果用户向后移动,这些调用将出错。我想我可以添加这样的逻辑:如果某个条件已经满足,就不要触发调用。或者,如果该操作已经发生,后端是否应该驱动该操作并返回某个响应代码。然后,我可以使用该响应代码向用户发送消息,告知此步骤已完成,或者使用响应来确定是否执行POST或PUT。是的,您可以通过rest API控制流。但是,您可能仍然需要在angular应用程序上维护请求的状态。您可以简单地将用户数据/进度保存在localStorage上,并在用户来回移动时检索它,这样您就有了用户数据历史记录。如果此信息不可用或不满足特定条件,您的post和put方法也会触发。我认为这更多的是用户体验问题,而不是技术问题,您应该询问用户想要哪个选项。但是你不应该强迫用户做一些事情(在很多情况下)。你的责任只是警告他们后果,而不是选择。例如:“如果你回到过去,这种情况就会发生,你将失去你的改变。”@DanielKalbasi我同意这主要是用户体验的问题。但是,我的一些路线具有自动启动POST或PUT的组件。如果用户向后移动,这些调用将出错。我想我可以添加这样的逻辑:如果某个条件已经满足,就不要触发调用。或者,如果该操作已经发生,后端是否应该驱动该操作并返回某个响应代码。然后,我可以使用该响应代码向用户发送消息,告知此步骤已完成,或者使用响应来确定是否执行POST或PUT。是的,您可以通过rest API控制流。但是,您可能仍然需要在angular应用程序上维护请求的状态。您可以简单地将用户数据/进度保存在localStorage上,并在用户来回移动时检索它,这样您就有了用户数据历史记录。如果此信息不可用或满足特定条件,也可以触发post和put方法。