2017-02-09 9 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 } 
]; 

App маршрутизации:

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 был импортирован до импорта module1.

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

Во-вторых, вместо того, чтобы экспортировать модуль маршрутизации в качестве константной с использованием ModuleWithProviders экспортировать его как класс. ака изменить файл module2 маршрутизации (module2.routing.ts), чтобы экспортировать класс как так (вам нужно импортировать NgModule):

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

Это должно исправить это для вас. Вот рабочий плункер: 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

 Смежные вопросы

  • Нет связанных вопросов^_^