angular2路由器的canDeactivate方法,即使我select从确认弹出窗口取消也改变路由器状态

canDeactivate method of angular2 router, changing router state even if I select cancel from confirmation popUp

我正在使用 canDeactivate 方法来阻止 angular2 中的浏览器导航。我正在调用一个确认弹出窗口,如果用户 select 取消它不会移动到另一个页面,但路由器的状态正在改变。使用 angular 路由器版本 4.4.4.

试试这个:

export class DeactivateComponent implements CanDeactivate<MyComponent> {
    canDeactivate(component: MyComponent,
                  currentRoute: ActivatedRouteSnapshot,
                  currentState: RouterStateSnapshot,
                  nextState: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {

        return component.canDeactivate() || window.confirm("Proceed?");
    }
}

典型路径:

{path: ':id', component: MyComponent, canDeactivate: [DeactivateComponent]},