UNPKG

ng-environment-setup

Version:
62 lines (56 loc) 1.47 kB
import { Injectable, Injector } from '@angular/core' import { CanActivate, CanActivateChild, CanLoad, Route, Router, UrlSegment, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router' import { Observable } from 'rxjs' import { UserService } from '@app/core/user.service' @Injectable({ providedIn: 'root' }) export class RouterGuardProvider implements CanActivate, CanActivateChild, CanLoad { constructor( private injector: Injector, private usr: UserService ) { } /** * 检测登录状态 */ checkLogin(): boolean { if (!this.usr.isLogined) { this.injector.get(Router).navigateByUrl('/login') } return this.usr.isLogined } /** * 是否要导航到某路由 */ canActivate( next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree { return this.checkLogin() } /** * 子组件是否要导航到某路由 */ canActivateChild( next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree { return this.checkLogin() } /** * 是否要异步导航到某特性模块 */ canLoad( route: Route, segments: UrlSegment[]): Observable<boolean> | Promise<boolean> | boolean { return this.checkLogin() } }