【发布时间】:2016-11-30 01:48:16
【问题描述】:
让我先让您熟悉我的代码,然后再让您熟悉我面临的问题。下面是我的主路由app.routes.ts的代码:
export const routes: RouterConfig = [
...LoginRoutes,
...DashboardRoutes,
{path:'dashboard', component: DashboardComponent, canActivate:[AuthGuard]}
];
export const APP_ROUTER_PROVIDERS = [
provideRouter(routes), [AuthGuard,AuthService, CanDeactivateGuard]
];
DashboardRoutes 看起来像:
export const DashboardRoutes = [
{
path:'dashboard',
component: DashboardComponent,
children:[
{path:'New', component:NewData, canActivate:[AuthGuard], canDeactivate:[CanDeactivateGuard]},
{path:'SavedData', component:SavedData, canActivate:[AuthGuard]},
{path:'NewIncentive', component:NewIncentive, canActivate:[AuthGuard]}
],
canActivate:[AuthGuard]
}
];
现在,当我导航到仪表板页面时,我的仪表板组件会初始化,这非常好。但是,如果我在仪表板的任何子路由组件上导航,仪表板组件会再次初始化;只有一次。我的第二个担心是,当我已经在 DashboardRoutes 中为 Deshbaord 组件 声明 Route 时,为什么我需要在 app.routes.ts 中再次声明它?如果我从app.routes.ts 中删除它的声明,它就不起作用。任何帮助表示赞赏。
【问题讨论】:
-
很难说。请提供 Plunker。
-
为什么又在
app.routes.ts中使用{path:'dashboard', component: DashboardComponent, canActivate:[AuthGuard]}? -
@micronyks 如果我删除它,应用程序将停止工作。
标签: angular angular2-routing typescript1.8