您可以使用 Angular 的路由守卫来实现路由重定向。首先,您需要创建一个路由守卫,用于检查用户是否已登录。如果用户未登录,则会将路由重定向到相同的路由,只是在末尾添加了“login”。
以下是一个示例代码:
AuthGuard:import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';
@Injectable({
providedIn: 'root'
})
export class AuthGuard implements CanActivate {
constructor(private router: Router) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
// 在此处检查用户是否已登录(示例逻辑)
const isLoggedIn = true; // 假设用户已登录
if (!isLoggedIn) {
// 未登录,重定向到相同的路由,添加 "login"
this.router.navigate([state.url + '/login']);
return false;
}
return true;
}
}
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AuthGuard } from './auth.guard';
const routes: Routes = [
{
path: 'dashboard',
canActivate: [AuthGuard],
children: [
// 子路由配置
]
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
现在,当用户尝试访问 /dashboard 路由时,会检查用户是否已登录。如果用户未登录,则会将路由重定向到 /dashboard/login。
请注意,以上示例仅为演示示例,并假设用户已登录。您需要根据实际情况实现适合您的登录逻辑。