离开页面时,作出逻辑判断
以ng-alain的项目为基础作演示
效果如图:
git
定义一个CanDeactivateGuardServicegithub
export class CanDeactivateGuardService implements CanDeactivate<CanDeactivateComponent> { canDeactivate(component: CanDeactivateComponent, route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean { return component.leaveTip(); } }
在component中完成leaveTip方法typescript
leaveTip() { return Observable.create((observer) => { if(!this.isSave){ this.modalService.confirm({ nzTitle: '页面离开提示', nzContent: '数据还没有保存,是否离开该页面?', nzOnOk: async () => { observer.next(true); }, nzOnCancel: () => { observer.next(false); } }); } else{ observer.next(true); } }); }
设置ng-alain的ReuseTabMatchMode,排除can-deactivate这个目标路由app
this.reuseTabService.mode = ReuseTabMatchMode.URL; const excludes = new Array<RegExp>(); excludes.push(new RegExp('/can-deactivate')); this.reuseTabService.excludes = excludes;
示例代码async
feat(abc: reuse-tab): new reuse-tab component plans!this
Angular路由守卫code