我在CanDeActivate()
中遇到Angular2
的问题。该场景是当用户从编辑屏幕离开页面时,弹出窗口带有“是”,“否”和“取消”按钮。
当用户点击取消按钮时,它会关闭弹出窗口,当用户点击没有按钮时,它会关闭弹出窗口,并重定向到用户点击导航的另一个页面。
假设应用程序有3个模块A,B和C.模块C有编辑屏幕。当用户在该页面上进行编辑而不保存用户在模块B上的点击时。弹出窗口带有“是”,“否”和“取消”按钮。在取消按钮上,它保留在同一页面上,但用户再次单击模块B,此处没有任何操作。如果用户点击模块A,弹出窗口就会出现。
我陷入了这个问题。如果有人可以提供帮助,我会分享我的代码。非常感谢。提前谢谢。
MyComponent.ts
canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean = () => {
if (this.isEdited) {
this.showConfirmationModal = true;
this.canLeavePage.asObservable().first();
return false;
}
return true;
}
灿Deactivate.guard.ts
export interface CanComponentDeactivate {
canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;
}
@Injectable()
export class CanDeactivateGuard implements CanDeactivate<CanComponentDeactivate> {
canDeactivate(component: CanComponentDeactivate) {
let can = component.canDeactivate();
if (!can) {
return false;
}
return true;
}
}
答案 0 :(得分:0)
这是2.3.0中修复的问题
路由器:每次一次又一次地导航到同一个网址失败时会运行警卫(#13209)(d46b8de)
https://github.com/angular/angular/blob/master/CHANGELOG.md#230-2016-12-07