2017-02-09 71 views
3

這裏的plunker:https://plnkr.co/edit/WIFNVIEVqls4gXk21Muj角2路進口模塊覆蓋當前

有是2個模塊都有定義的路由。模塊2導入模塊1以便使用它的一個組件。您無法導航到模塊2.模塊1加載代替。

模塊1個路由:

const routes: Routes = [ 
    { path: '', component: Module1Component } 
]; 

模塊2路由:

const routes: Routes = [ 
    { path: '', component: Module2Component } 
]; 

應用路由:

const routes: Routes = [ 
    { path: 'module1', loadChildren: 'app/module1/module1.module#Module1Module' }, 
    { path: 'module2', loadChildren: 'app/module2/module2.module#Module2Module' } 
]; 

謝謝。

回答

7

兩個問題得到這個工作。首先,路由器存在一個錯誤,它會考慮導入模塊的順序。有關錯誤的更多詳細信息,請參閱此錯誤報告:https://github.com/angular/angular/issues/12648

因此,爲了避開該錯誤,您需要更改module2.module.ts中的導入順序,以便在導入之前導入您的module2路由文件模塊1。

@NgModule({ 
    imports: [ 
     routing, // this order is important 
     Module1Module 
    ], 
    declarations: [ 
     Module2Component 
    ] 
}) 

二,而不是用你的出口路由模塊作爲一個const ModuleWithProviders其導出爲一類。又名改變模塊2路由文件(module2.routing.ts)出口一類像這樣(你需要導入NgModule):

@NgModule({ 
    imports: [RouterModule.forChild(routes)], 
    exports: [RouterModule] 
}) 
export class routing { 
} 

這應該可以解決它。這裏有一個工作plunker:https://plnkr.co/edit/5impstull9EBCUxlw26k

+0

提供代碼和解釋它的好工作。真正提高你答案的質量。 –

+0

謝謝。我看到訂單問題,但它作爲一個班級出口有什麼不同? – rook

+0

我沒有深入瞭解爲什麼你需要將路由模塊作爲一個類導出。我剛剛注意到在最新的角度文檔中,他們的例子都將其導出爲一個類[https://angular.io/docs/ts/latest/guide/router.html](https://angular.io/docs/ts /latest/guide/router.html)。當我做出改變時,它開始工作。可能角度不贊成其他方法?不確定。 – eddierunner