Angular 角度2+;停用保护会破坏路由历史-有什么解决方法吗?

Angular 角度2+;停用保护会破坏路由历史-有什么解决方法吗?,angular,Angular,在我的Angular5应用程序的路由中,当导航离开某个组件时,我对未保存的更改进行了检查。我在这里使用了Debaker建议的解决方案: 我面临一个与Angular中未解决问题相关的问题,如下所述: 总之,发生的情况是,例如,用户点击后退按钮,他们点击停用保护并回答“否”,他们希望留在页面上。然后他们再次点击后退按钮,第二次回答“是”,他们想放弃更改,继续后退导航。但是,由于第一个(被拒绝的)导航在路由历史记录中被记住,因此它们在路由中被向后导航两步,而不是一步 上面的链接(针对角度问题)是在

在我的Angular5应用程序的路由中,当导航离开某个组件时,我对未保存的更改进行了检查。我在这里使用了Debaker建议的解决方案:

我面临一个与Angular中未解决问题相关的问题,如下所述:

总之,发生的情况是,例如,用户点击后退按钮,他们点击停用保护并回答“否”,他们希望留在页面上。然后他们再次点击后退按钮,第二次回答“是”,他们想放弃更改,继续后退导航。但是,由于第一个(被拒绝的)导航在路由历史记录中被记住,因此它们在路由中被向后导航两步,而不是一步


上面的链接(针对角度问题)是在2016年12月提出的,到目前为止,还没有关于何时解决该问题的更新,因此我想知道是否有人在此期间提出了任何解决方法?

在组件中返回false之前,添加此.Location.go(this.route.url)。它应该解决这个问题

从'@angular/common'导入{Location};
从“@angular/router”导入路由器;
canDeactivate():可观察的|承诺|布尔值{
返回confirm('是否要放弃更改?')?true:(this.Location.go(this.\u route.url),false);
}