2017-03-07 105 views
1

首先是孩子的路線,我已經看到了這個帖子,這似乎是接近我的問題,但我承認我被那種迷失:How to route to a Module as a child of a Module - Angular 2 RC 5Angular2定義從子路由模塊

我會盡力讓它很簡單:

  • 我有我的app.component.html文件有一個<router-outlet>
  • 在這第一個插座,我的MasterModule加載MasterComponent,它有另一個<router-outlet>。從我的MasterRoutingModule,我可以從我的MasterComponent定義我的孩子路線。
  • 我有我的其他模塊(EquipmentSLModule),它有自己的路線,我的目標是從我的EquipmentSLRouting添加子路線(將在我的第二個<router-outlet>中從MasterComponent加載)。

有沒有辦法做到這一點?

N.B:我知道現在還沒有代碼,我會在一段時間內編輯並添加一些代碼。

回答

2

如果你想渲染你加載的模塊在組件<router-outlet></router-outlet>罩下,你需要配置爲特定組件的子組件。 我爲你需要什麼,看看這裏是鏈接Plunker

imports: [BrowserModule, 
     RouterModule.forRoot([{ 
       path: '', 
       pathMatch: 'full', 
       redirectTo: '/home' 
      }, 
      { 
       path: 'home', 
       component: AppHome 
       children: [{ 
        path: 'ModuleA', 
        loadChildren: 'src/ModuleA' 
       }] 
      }, 
     ]) 
    ] 
+0

@亞歷克斯伯涅是一個簡單的例子是你的想法,或者它有什麼不同? –

+0

是的,這看起來不錯,因爲其他答案! plunkr確實有幫助。非常感謝 –

+0

我是否只需要通過延遲加載的模塊? –

0

做這樣的事情:

//... 
    const EquipmentSLRoutes: Routes = [ 
     { path: 'equipment-sl', component: EquipmentSLComponent }, 
     { path: 'equipment-sl/:id', component: EquipmentSLDetailComponent } 
    ]; 

    @NgModule({ 
     imports: [ 
     //... 
     RouterModule.forChild(EquipmentSLRoutes) 
     ], 
     exports: [ 
     //... 
     RouterModule 
     ] 
    }) 
    export class EquipmentSLModule { } 

這個模塊添加到您的MasterModule進口陣列。

1

讓我們看看我是否明白你的要求。每個模塊都可以擁有自己的路由。然後,您可以參考該路由作爲這樣的路徑的孩子:

在你AppRouting,從加載路線:

export const ROUTES: Routes = [ 
    { 
     path: 'masterRoute', 
     loadChildren: './path/to/MasterRoutingModule.module#MasterRoutingModule' } 
    } 
] 

在你MasterRouting,加載EquipmentSLModule的路線以及利用在<router-outlet>所述MasterModule的根組件:

export const ROUTES: Routes = [ 
    { path: '', component: MasterComponent }, //root 
    { 
     path: 'otherRoute', 
     loadChildren: './path/to/EquipmentSLModule.module#EquipmentSLModule' } 
    } 
] 

這將加載從EquipmentSLModule路由作爲在MastRoutingModule路由。

在您的EquipmentSLModule中,您將爲該模塊導入路徑爲RouterModule.forChild(routes),與MasterModule相同。 AppModule將使用RouterModule.forRoot(routes)