当我从Angular5应用程序的路由中导航时,我已经实现了对未保存更改的检查。我在这里使用了stewdebaker建议的解决方案: Warn user of unsaved changes before leaving page
我遇到的问题与此处描述的Angular中尚未解决的问题有关: https://github.com/angular/angular/issues/13586
总而言之,例如,用户点击后退按钮,他们点击停用后卫并回复“#34;否"”,他们希望留在页面上。然后他们再次点击后退按钮,第二次他们回复#34;是"他们想放弃他们的更改并继续使用Back导航。但由于第一个(被拒绝的)导航会在路由历史记录中被记住,因此它们会在路由中向后导航两步而不是一个。
上面的链接(针对Angular问题)是在2016年12月提出的,到目前为止,当问题得到修复时没有更新,所以我想知道是否有人在此期间提出了任何变通方法?
答案 0 :(得分:0)
在组件中返回false之前,添加this.Location.go(this.route.url)。它应该可以解决问题。
喜欢
import { Location } from '@angular/common';
import router from '@angular/router';
canDeactivate():Observable<boolean>| Promise<boolean>| boolean {
return confirm('Do you want to discard the changes?') ? true : (this.Location.go(this._route.url),false);
}