我正在使用 angular 2 路由器,我有一个设置为插入某个路由的组件。我想编写另一个更通用的组件,我可以将它放在第一个组件中,并在用户尝试离开第一个组件路线时提示用户并询问他是否确定要离开(有一些逻辑是与这个问题无关)
我尝试在此离开对话框组件中使用 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 代码中,它确实可以工作。我不确定它是一个错误还是它打算像那样工作(或者我可能只是做错了什么)。这是正确的方法还是我应该以不同的方式完成这项任务?
- - - - - - - - - - - - - - - - 编辑 - - - - - - - - - ----------------------
这是关于路由器的一个非常旧版本的问题,这应该已经在新路由器中实现,更多信息: