import { Injectable } from '@angular/core'; import { CanActivate, CanActivateChild, CanDeactivate, CanLoad, Route, UrlSegment, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router, Resolve } from '@angular/router'; import { Observable } from 'rxjs'; import { NgForage } from 'ngforage'; @Injectable({ providedIn: 'root', }) export class AuthGuard implements CanActivate, CanActivateChild, CanDeactivate, CanLoad, Resolve { constructor( private ngForage: NgForage, private router: Router ) { } canActivate( route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { this.ngForage.getItem('TOKEN').then(res => { if (!!!res) { this.router.navigate(['login']); this.ngForage.setItem('TOKEN', 'aaaa74654sdf4as6d4'); } }); console.log(route); console.log(state); return true; } canActivateChild( childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { console.log(childRoute); console.log(state); return true; } canDeactivate( component: unknown, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { return true; } canLoad( route: Route, segments: UrlSegment[]): Observable | Promise | boolean | UrlTree { return true; } resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | any { console.log(route); console.log(state); } }