16 lines
		
	
	
		
			535 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			16 lines
		
	
	
		
			535 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| // #docregion
 | |
| import { Injectable }    from '@angular/core';
 | |
| import { CanDeactivate } from '@angular/router';
 | |
| import { Observable }    from 'rxjs/Observable';
 | |
| 
 | |
| export interface CanComponentDeactivate {
 | |
|  canDeactivate: () => boolean | Observable<boolean>;
 | |
| }
 | |
| 
 | |
| @Injectable()
 | |
| export class CanDeactivateGuard implements CanDeactivate<CanComponentDeactivate> {
 | |
|   canDeactivate(component: CanComponentDeactivate): Observable<boolean> | Promise<boolean> | boolean {
 | |
|     return component.canDeactivate ? component.canDeactivate() : true;
 | |
|   }
 | |
| }
 |