1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| import { Injectable } from '@angular/core';
| import {
| CanDeactivate,
| ActivatedRouteSnapshot,
| RouterStateSnapshot,
| } from '@angular/router';
| import { GuardComponent } from './guard.component';
| import { Observable } from 'rxjs';
| import { NzModalService } from 'ng-zorro-antd';
|
| @Injectable()
| export class CanLeaveProvide implements CanDeactivate<GuardComponent> {
| constructor(private confirmSrv: NzModalService) {}
|
| canDeactivate(
| component: GuardComponent,
| currentRoute: ActivatedRouteSnapshot,
| currentState: RouterStateSnapshot,
| nextState?: RouterStateSnapshot,
| ): boolean | Observable<boolean> | Promise<boolean> {
| return new Observable(observer => {
| this.confirmSrv.confirm({
| nzTitle: '确认要离开吗?',
| nzContent: '你已经填写了部分表单离开会放弃已经填写的内容。',
| nzOkText: '离开',
| nzCancelText: '取消',
| nzOnOk: () => {
| observer.next(true);
| observer.complete();
| },
| nzOnCancel: () => {
| observer.next(false);
| observer.complete();
| },
| });
| });
| }
| }
|
|