ngOnInit生命周期钩子行为与路由模块?

时间:2017-02-01 15:09:12

标签: angular angular2-routing

我在我的应用程序的根路由模块中使用以下路由:

const routes: Routes = [
  {
    path: '',
    children: [
      {
        path: 'home',
        component: HomeDetailsComponent,
      },
      {
        path: 'home',
        component: HomeDetailsComponent,
        children: [
          {
            path: 'room/:id', 
            component: RoomDetailsComponent,
          },
        ]
      },
      {
        path: 'sectorNumber',
        component: SectorNumberComponent
      },
      {
        path: '**',
        redirectTo: 'home',
      },
    ]
  }
];

现在,在HomeDetailsComponent中,我使用OnInit生命周期钩子来调用http get方法并基于此,进行一些事件处理。但是,我注意到,通过这种路由,我的HomeDetailsComponent初始化了两次。当我导航到'http://localhost:3000/#/curriculum/'时,当我导航到'http://localhost:3000/#/curriculum/chapter/1'路线时,我会导航谁能告诉我为什么会这样?

1 个答案:

答案 0 :(得分:1)

因为组件不会重复用于不同的路由。您将导航离开路线的组件将被销毁,并将创建您导航到的路径。仅当from-route和to-route相同但参数值(:id)发生变化时,这才会有所不同。