在Angular中,如果使用惰性加载模块,并且该模块具有多个插座,则在升级到Angular 13之后可能会遇到问题。出现这个问题的原因是惰性加载模块的默认配置发生了变化。解决方法是在路由配置中明确指定插座名称。
可以通过以下代码进行解决:
app-routing.module.ts 文件
import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { OutletsComponent } from './outlets/outlets.component';
const routes: Routes = [ { path: 'outlets', component: OutletsComponent, outlet: 'top' }, // 定义名为 'top' 的插座 { path: 'about', loadChildren: () => import('./about/about.module').then(m => m.AboutModule) }, { path: '', redirectTo: '/outlets(top:outlets)', pathMatch: 'full' } ];
@NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }
about-routing.module.ts 文件
import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { AboutComponent } from './about.component';
const routes: Routes = [ { path: '', component: AboutComponent, outlet: 'bottom' } // 定义名为 'bottom' 的插座 ];
@NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class AboutRoutingModule { }
about.module.ts 文件
import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { AboutComponent } from './about.component'; import { AboutRoutingModule } from './about-routing.module';
@NgModule({ declarations: [ AboutComponent ], imports: [ CommonModule, AboutRoutingModule ] }) export class AboutModule { }
outlets.component.html 文件
这些代码