У меня есть мультимодульное приложение.Модули упоминаются в маршрутах, как если бы они были ленивыми модулями (loadChildren: 'path/to/module#Module'
), но на самом деле они нетерпеливы - этот синтаксис используется только для достижения более красивой изолированной структуры маршрутизации.
Фактически, ленивая загрузканарушается сразу, когда модули импортируются напрямую, используя .forRoot(config)
.Конфигурирование необходимо для предоставления ключей API и других фрагментов информации, зависящих от среды (домена страны).
Теперь предположим, что один из этих модулей с именем AbcModule
имеет свою локальную маршрутизацию следующим образом
export const abcRoutes: Routes = [
{
path: '',
pathMatch: 'prefix', // or 'full' - doesn't really make diff
component: AbcPageComponent,
},
];
и в основном app-routing.module.ts
называется так:
[
{
path: '',
loadChildren: 'app/home/home.module#HomeModule',
},
// ... more routes
{
path: 'abc',
loadChildren: 'path/to/abc.module#AbcModule',
}
]
Теперь проблема в том, что когда RouterModule
собирает маршруты во время начальной загрузки, он выбирает 2 отдельных маршрута спустые пути.По иронии судьбы преобладает тот, который принадлежит AbcModule
(который я ясно вижу по console.log(this.router.config)
), а AbcPageComponent
визуализируется вне макета HomeModule
(последствия: нет меню, боковой панели и т. Д.)
Основной вопрос:
- Учитывая эту архитектуру, есть ли способ повлиять на порядок / последовательность, в которой выбираются маршруты?(Я не думаю, что возиться с конфигурацией и Route.resetConfig () было бы рекомендуемым способом)
Другие вопросы:
- Isчто-то не так с этим шаблоном?
- Можно ли настроить лениво загруженные модули с помощью конфигурации?
Angular 4.1.x