我正在使用angular 2路由器,我有一个组件被设置为插入某个路由。我想写另一个更通用的组件,我可以放在第一个组件中,当用户试图离开第一个组件路径并询问他是否确定要离开时会提示用户(有一些逻辑是与这个问题无关))
我尝试在此Leave Dialog组件中使用CanDeactivate,但它永远不会被调用(切换路由时)。
继承简化代码: AppComponent定义路线:
@RouteConfig([{
component: FirstRouteComponent,
name: "First",
path: "/First",
useAsDefault: true
},
{
component: SecondRouteComponentComponent,
name: "Second",
path: "/Second"
}])
export class AppComponent {
}
FirstRouteComponent模板:
<leave-dialog></leave-dialog>
请假对话框代码:
export class LeaveDialogComponent implements CanDeactivate {
constructor() {
}
public routerCanDeactivate(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction): boolean|Promise<boolean> {
// THIS FUNCITON IS NEVER CALLED EVEN WHEN I SWITCH ROUTE
}
}
如果我将CanDeactivate放在FirstRouteComponent代码中,它确实有效。我不确定它是否是一个错误,或者它是否打算像那样工作(或者我只是做错了)。这是正确的方法,还是我应该以不同的方式处理这项任务?
--------------------------------编辑-------------- ---------------------------
这被问到一个非常旧版本的路由器,这应该已经在新路由器中实现了,更多信息: