angular2中如何通过router设置特色模块默认登陆组件

How to set featured module default landing component via router in angular 2

我有两个模块(clientModule、AdminModule),管理模块是延迟加载的。

在页面加载时,加载客户端模块。

客户端模块路由

const _routes: Routes = [
  {
    path: ':id', component: appComponent, children: [
      { path: 'page1', component: page1Component},
      { path: 'admin', loadChildren:  './admin/admin.module#AdminModule' }
    ]
  }
];

管理模块路由

const _routes: Routes = [
  {
    path: '', component: AdminComponent, children: [
      { path: 'adminPage1', component: adminPage1Component},
      { path: 'adminPage2', component: adminPage2Component},

    ]
  }

];

问题

  1. 要求是在管理模块加载时导航到 'adminPage1Component' 组件。

我已经解决了,如果有人遇到同样的问题,下面的方法行得通。

管理模块路由配置

const _routes: Routes = [
  {
    path: '', component: AdminComponent, children: [
      { path: ' ', component: adminPage1Component},
      { path: 'adminPage1', component: adminPage1Component},
      { path: 'adminPage2', component: adminPage2Component},

    ]
  }
];

通过在 children 数组中添加一个空路径 ( { path: ' ', component: adminPage1Component} ) 默认加载组件。

此外,如果您有需要在加载组件时添加 css class 的元素。例如:

 <li routerLink="adminPage1" routerLinkActive="active">
          Admin Page 1
 </li> 

您可以执行以下操作来支持 routerLinkActive

const _routes: Routes = [
  {
    path: '', component: AdminComponent, children: [
      { path: ' ', component: adminPage1Component, redirectTo: 'adminPage1',  pathMatch: 'full'},
      { path: 'adminPage1', component: adminPage1Component},
      { path: 'adminPage2', component: adminPage2Component},

    ]
  }
];

我基本上是把“redirectTo: 'adminPage1', pathMatch: 'full'”添加到空路径中。