延迟加载的模块中的路由始终会重新加载根组件

时间:2020-08-22 15:44:29

标签: angular routes

我遇到了一个问题,即在延迟加载的模块中导航到子路由会导致子路由的父路由组件重新加载。

这是我的主要路由器配置:

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

0 个答案:

没有答案
相关问题