Angular2 + Deactivation Guard会破坏路由历史记录 - 任何解决方法?

时间:2018-02-22 10:44:23

标签: angular

当我从Angular5应用程序的路由中导航时,我已经实现了对未保存更改的检查。我在这里使用了stewdebaker建议的解决方案: Warn user of unsaved changes before leaving page

我遇到的问题与此处描述的Angular中尚未解决的问题有关: https://github.com/angular/angular/issues/13586

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

上面的链接(针对Angular问题)是在2016年12月提出的,到目前为止,当问题得到修复时没有更新,所以我想知道是否有人在此期间提出了任何变通方法?

1 个答案:

答案 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);  
}