【发布时间】:2017-10-11 14:54:19
【问题描述】:
我为 CanDeactivate 功能添加了以下路由器保护,以验证未保存的更改,这对我来说工作正常
导出接口 CanComponentDeactivate { canDeactivate: () => 可观察 |承诺 |布尔值; }
@Injectable()
export class CanDeactivateGuard implements CanDeactivate<CanComponentDeactivate> {
constructor( private eventService: EventsService) { }
canDeactivate(component: CanComponentDeactivate, route?: ActivatedRouteSnapshot,
currentState?: RouterStateSnapshot,
nextState?: string) {
let sub = new Subject();
if (BaseApiService.callStack.length || UnsavedData.isThereUnSavedData) {
this.eventService.triggerEvent(CONST.SHOW_DATA_LOSS_MODAL, {
showDataLossModal: true,
sub : sub
});
}
return BaseApiService.callStack.length || UnsavedData.isThereUnSavedData ? false : true;
}
}
但是当我检测到是否有任何未保存的更改时,我会显示一个带有“是”和“否”按钮的对话框。
如果用户单击“是”,我必须清除未保存的更改并重定向到用户单击的 URL。为此,我必须检查用户想要在 CanDeactivate 函数上重定向的 URL。
nextState?: string 但是每次我得到这个 undefined。
如果我做了任何更改,请纠正我。
【问题讨论】:
标签: angular routing angular2-routing state