首先,确保你的Angular应用使用了Angular CLI。如果尚未使用,请安装它:
npm install -g @angular/cli
接下来,在项目的根目录下,通过以下命令生成一个名为crisis-center的特性模块:
ng generate module crisis-center --routing
这个命令会创建一个名为crisis-center的模块,并生成一个带有路由配置的crisis-center-routing.module.ts文件。
打开crisis-center-routing.module.ts文件,并添加一些异步路由配置:
// crisis-center-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CrisisCenterComponent } from './crisis-center.component';
import { CrisisListComponent } from './crisis-list/crisis-list.component';
import { CrisisDetailComponent } from './crisis-detail/crisis-detail.component';
const routes: Routes = [
{
path: '',
component: CrisisCenterComponent,
children: [
{
path: 'crises',
component: CrisisListComponent,
},
{
path: 'detail/:id',
component: CrisisDetailComponent,
},
{
path: '',
redirectTo: 'crises',
pathMatch: 'full',
},
],
},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class CrisisCenterRoutingModule {}
在上述代码中,我们使用RouterModule.forChild(routes)来配置CrisisCenterRoutingModule。这是因为crisis-center模块是一个特性模块,而不是应用的根模块。
接下来,在crisis-center模块的目录中,为每个异步加载的组件创建一个特性模块。使用以下命令创建:
ng generate module crisis-list --route crises --module crisis-center
ng generate module crisis-detail --route detail/:id --module crisis-center
这将分别创建crisis-list.module.ts和crisis-detail.module.ts文件,并为每个模块配置异步加载的路由。
最后,打开app-routing.module.ts文件,并将CrisisCenterRoutingModule添加到路由配置中:
// app-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HeroListComponent } from './hero-list/hero-list.component';
import { HeroDetailComponent } from './hero-detail/hero-detail.component';
import { AuthGuard } from './auth-guard.service';
import { CrisisCenterComponent } from './crisis-center/crisis-center.component';
import { CrisisCenterRoutingModule } from './crisis-center/crisis-center-routing.module'; // 导入 CrisisCenterRoutingModule
const routes: Routes = [
{ path: 'heroes', component: HeroListComponent },
{ path: 'detail/:id', component: HeroDetailComponent, canActivate: [AuthGuard] },
{ path: 'crisis-center', loadChildren: () => import('./crisis-center/crisis-center.module').then(m => m.CrisisCenterModule) },
{ path: '', redirectTo: '/heroes', pathMatch: 'full' },
];
@NgModule({
imports: [RouterModule.forRoot(routes), CrisisCenterRoutingModule], // 添加 CrisisCenterRoutingModule
exports: [RouterModule],
})
export class AppRoutingModule {}
在上述代码中,我们使用loadChildren属性来异步加载CrisisCenterModule。loadChildren接受一个函数,该函数返回一个Promise,该Promise解析为需要加载的模块。我们使用import语法来实现异步加载。
通过上述步骤,你的Angular应用现在应该具有异步加载模块的功能。请注意,异步加载模块需要Web服务器支持,以便在运行时动态获取模块。
转载请注明出处:http://www.pingtaimeng.com/article/detail/4946/Angular