配置路由守卫接口文件
路由守卫支持多种守卫接口:
- 用CanActivate来处理导航到某路由的情况。
// 创建auth.guard.ts
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
@Injectable({
providedIn: 'root',
})
export class AuthGuard implements CanActivate {
// 可在canActivate中做验证
canActivate(
next: ActivatedRouteSnapshot, // 包含了即将被激活的路由
state: RouterStateSnapshot // 包含了该应用即将到达的状态(url)
): boolean {
console.log('AuthGuard#canActivate called');
return true;
}
}
// 引用auth.guard.ts - 无需导入至module
import { AuthGuard } from './auth.guard.ts';
export const RootRouting: Routes = [
{ path: 'home',
canActivate: [AuthGuard], //可以添加多个路由守卫
component: HomeComponent }
];
- 用CanActivateChild来处理导航到某子路由的情况。
- 用CanDeactivate来处理从当前路由离开的情况
- 用Resolve在路由激活之前获取路由数据。用Resolve在路由激活之前获取路由数据。
- 用CanLoad来处理异步导航到某特性模块的情况。用CanLoad来处理异步导航到某特性模块的情况。