You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular2嵌套模块内路由配置及登录跳转场景实现方案问询

我来帮你一步步搞定Angular嵌套模块的路由配置,完全匹配你要的URL规则和导航逻辑:

步骤1:配置根路由(app-routing.module.ts)

根路由要处理默认跳转登录页,以及受保护的pi3路由入口,只有通过AuthGuard验证的用户才能进入pi3模块:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { PiLoginComponent } from './pi-login/pi-login.component';
import { AuthGuard } from './auth.guard'; // 假设你已实现登录守卫

const routes: Routes = [
  { path: '', redirectTo: 'login', pathMatch: 'full' }, // 首次加载默认跳转到login
  { path: 'login', component: PiLoginComponent },
  { 
    path: 'pi3', 
    canActivate: [AuthGuard], // 验证通过才能进入该模块
    loadChildren: () => import('./piLayout/pilayout.module').then(m => m.PilayoutModule) 
  },
  { path: '**', redirectTo: 'login' } // 404页面跳转回登录页
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
步骤2:配置PiLayoutModule的路由(pilayout-routing.module.ts)

PiLayout作为父容器组件,它的路由要承载Home、Dashboards等子模块。这里path设为空,因为根路由已经指定了pi3,子路由会自动拼接成pi3/xxx格式:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { PilayoutComponent } from './pilayout.component';

const routes: Routes = [
  {
    path: '', // 对应根路由的pi3,所以这里留空
    component: PilayoutComponent,
    children: [
      // 加载HomeModule,对应URL:pi3/home
      { path: 'home', loadChildren: () => import('./home/home.module').then(m => m.HomeModule) },
      // 加载DashboardsModule,后续子路由会拼接成pi3/dashboards/commandashboard
      { path: 'dashboards', loadChildren: () => import('./dashboards/dashboards.module').then(m => m.DashboardsModule) }
    ]
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class PilayoutRoutingModule { }

别忘了在PilayoutModule里导入路由模块并声明组件:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { PilayoutComponent } from './pilayout.component';
import { PilayoutRoutingModule } from './pilayout-routing.module';

@NgModule({
  declarations: [PilayoutComponent],
  imports: [
    CommonModule,
    PilayoutRoutingModule
  ]
})
export class PilayoutModule { }
步骤3:配置HomeModule的路由(home-routing.module.ts)

HomeModule的路由path设为空,这样访问pi3/home时,HomeComponent会渲染在PilayoutComponent的<router-outlet>中:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home.component';

const routes: Routes = [
  { path: '', component: HomeComponent }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class HomeRoutingModule { }
步骤4:配置DashboardsModule的路由(dashboards-routing.module.ts)

这里处理pi3/dashboards/commandashboard的路由,path设为commandashboard,拼接后就是你要的完整URL:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { CommandashboardComponent } from './commandashboard/commandashboard.component';

const routes: Routes = [
  { path: 'commandashboard', component: CommandashboardComponent }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class DashboardsRoutingModule { }
步骤5:AuthGuard核心实现

确保登录守卫能正确判断用户状态,验证失败时自动跳回登录页:

import { Injectable } from '@angular/core';
import { CanActivate, Router } from '@angular/router';
import { AuthService } from './auth.service'; // 假设你有处理登录状态的服务

@Injectable({
  providedIn: 'root'
})
export class AuthGuard implements CanActivate {
  constructor(private authService: AuthService, private router: Router) {}

  canActivate(): boolean {
    if (this.authService.isLoggedIn()) { // 自定义判断登录状态的方法
      return true;
    } else {
      this.router.navigate(['/login']);
      return false;
    }
  }
}
关键检查点
  • 务必在PilayoutComponent的模板中添加<router-outlet>,否则子模块组件无法渲染
  • 登录成功后,用this.router.navigate(['/pi3/home'])触发导航到目标页面

这样配置后,完全满足你的需求:

  • 首次加载默认进入login组件
  • 验证通过后导航至PiLayoutModule下的HomeModule,URL为pi3/home
  • 支持pi3/dashboards/commandashboard这类嵌套URL格式

内容的提问来源于stack exchange,提问作者Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:19:42