33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| // #docregion
 | |
| import { Injectable }           from '@angular/core';
 | |
| import { CanDeactivate,
 | |
|          ActivatedRouteSnapshot,
 | |
|          RouterStateSnapshot }  from '@angular/router';
 | |
| import { Observable }           from 'rxjs/Observable';
 | |
| 
 | |
| import { CrisisDetailComponent } from './crisis-center/crisis-detail.component';
 | |
| 
 | |
| @Injectable()
 | |
| export class CanDeactivateGuard implements CanDeactivate<CrisisDetailComponent> {
 | |
| 
 | |
|   canDeactivate(
 | |
|     component: CrisisDetailComponent,
 | |
|     route: ActivatedRouteSnapshot,
 | |
|     state: RouterStateSnapshot
 | |
|   ): Observable<boolean> | Promise<boolean> | boolean {
 | |
|     // Get the Crisis Center ID
 | |
|     console.log(route.params['id']);
 | |
| 
 | |
|     // Get the current URL
 | |
|     console.log(state.url);
 | |
| 
 | |
|     // Allow synchronous navigation (`true`) if no crisis or the crisis is unchanged
 | |
|     if (!component.crisis || component.crisis.name === component.editName) {
 | |
|       return true;
 | |
|     }
 | |
|     // Otherwise ask the user with the dialog service and return its
 | |
|     // promise which resolves to true or false when the user decides
 | |
|     return component.dialogService.confirm('Discard changes?');
 | |
|   }
 | |
| }
 |