我遇到了一个问题,即在延迟加载的模块中导航到子路由会导致子路由的父路由组件重新加载。
这是我的主要路由器配置:
const routes: Routes = [
{
path: 'e',
loadChildren: () => import('../event/event.module').then(mod => mod.Event_Module)
},
{
path: '',
canLoad: [App_User_Resolver],
loadChildren: () => import('../home/home.module').then(mod => mod.Home_Module),
},
{
path: '**',
redirectTo: '',
},
]
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class App_Routing_Module { }
这是路径e
的路由模块:
const routes: Routes = [
{
path: ':eid',
canActivateChild: [Event_Resolver],
component: Event_Root_Component,
children: [
{
path: 'r/:rid',
component: Event_Room_Component,
},
{
path: '',
component: Event_Default_Component,
},
],
},
]
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class Event_Routing_Module { }
Event_Root_Component
的子路由包含<router-outlet></router-outlet>
。
如果我在e/:eid
路线内(例如[routerLink]="['./r', <some_id>]"
)导航,则Event_Root_Component
在某些情况下会重新加载。
我所指的特定情况是,我从e/:eid
模块中的路由导航到home
(实际上这是home
中另一个惰性加载模块中的路由模块)。然后,导航将我带到e/:eid
。然后,当在e/:eid
中导航时,问题就会显现出来(即,随后的所有导航都会重新加载Event_Root_Component
)。但是,如果我只是在e/:eid
时刷新然后导航,则根组件将不会像以前一样重新加载。
如何防止重新加载Event_Root_Component
?