• 检查用户是否可以访问某一个路由
    • CanActivate 为接口,路由守卫类要实现该接口,该接口规定类中需要有 canActivate 方法,方法决定是否允许访问目标路由
    • 路由可以应用多个守卫,所有守卫方法都允许,路由才被允许访问,有一个守卫方法不允许,则路由不允许被访问
    • 创建路由守卫:ng g guard guards/auth ```typescript import { Injectable } from ‘@angular/core’; import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from ‘@angular/router’; import { Observable } from ‘rxjs’;

    @Injectable({ providedIn: ‘root’ })

    export class AuthGuard implements CanActivate { // 注入路由实例 constructor(private router: Router) { }

    1. canActivate(
    2. // 待激活路由快照
    3. route: ActivatedRouteSnapshot,
    4. // 路由快照状态
    5. state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
    6. // 用于实现跳转
    7. return this.router.createUrlTree(["/home"])
    8. // 禁止访问目标路由
    9. // return false
    10. // 允许访问目标路由
    11. // return true
    12. }

    }

    1. ```typescript
    2. // src/app/app-routing.module.ts
    3. {
    4. path: "about/:name",
    5. component: AboutComponent,
    6. canActivate: [AuthGuard]
    7. },