0
我已新增下列路由器后卫CanDeactivate功能CanDeactivate路由器后卫nextstate(下一个URL)来验证这是对我工作的罚款未保存的更改无法获取
导出接口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但每次我得到这个未定义。
如果我做了任何更改,请纠正我。下面
仍然未定义... – Rhushikesh
@Rhushikesh,我已经用Plunker添加了一个简单的例子,您可以在控制台日志中看到下一个状态是在打印除家以外的路由时打印,您是否可以检查是否正在做类似的事情,如果没有,你可以编辑Plunker重现你的问题,然后可能是我可以帮助,干杯! –