import { Injectable } from '@angular/core'; import {ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot} from '@angular/router'; import { Observable } from 'rxjs'; export interface CanComponentDeactivate { canDeactivate: () => Observable | Promise | boolean; } @Injectable({ providedIn: 'root' }) export class WorkProtectionGuard implements CanDeactivate { canDeactivate(component: CanComponentDeactivate, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable | Promise | boolean { return component.canDeactivate ? component.canDeactivate() : true; } }