【发布时间】:2018-05-18 08:36:30
【问题描述】:
我有这个界面用来防止用户离开页面
export interface ComponentCanDeactivate {
canDeactivate: () => boolean;
}
@Injectable()
export class PendingChangesGuard implements CanDeactivate<ComponentCanDeactivate> {
canDeactivate(component: ComponentCanDeactivate): boolean {
return component.canDeactivate() ?
//code : //more code
}
}
在我的一个组件中,我有以下代码
export class DashboardComponent implements ComponentCanDeactivate{
@HostListener('window:beforeunload')
canDeactivate(): boolean {
return !this.isDirty;
}
我的问题是来自 PendingChangesGuard 的我的组件 -> (component: ComponentCanDeactivate) 始终为空,所以我收到一条错误消息
不能调用null的canDeactivate()
我的路由中也有这个设置
path: 'dashboard',
canDeactivate: [PendingChangesGuard],
loadChildren: './views/dashboard/dashboard.module#DashboardModule'
谁能告诉我我做错了什么?
【问题讨论】:
-
@MilanRaval 是的,我实现了 ComponentCanDeactivate 并重写了函数 canDeactive(): boolean。 (您可以在我的帖子中间看到代码)。它仅在表单脏或不脏时才返回
标签: angular angular-routing angular-router-guards