угловые маршруты в отдельных модулях, указывающие на один и тот же компонент

Я реорганизую одномодульное угловое приложение на несколько функциональных модулей.

Помимо лучшего кода, я сосредоточен на реализации отложенной загрузки функциональных модулей.

У меня есть набор компонентов, которые нужно организовать в два функциональных модуля, каждый со своими маршрутами.

В общем случае я знаю, как это сделать.

Однако у меня в руках более специфический случай, потому что оба функциональных модуля будут иметь определенный маршрут, указывающий на один и тот же XComponent, как показано ниже.

{path: /a-module/x, component: XComponent}

{path: /b-module/x, component: XComponent}

Вопрос

Прежде чем приступить к рефакторингу, я хотел бы узнать, возможно ли следующее решение.

  1. определить AModule и его маршруты и объявить его компоненты
  2. определить BModule и его маршруты и объявить его компоненты
  3. определить CModule
  4. объявить и экспортировать XComponent из CModule
  5. импортировать CModule в AModule и BModule
  6. добавить {path: /a-module/x, component: XComponent} к маршрутам AModule
  7. добавить {path: /b-module/x, component: XComponent} к маршрутам BModule
  8. ленивая загрузка AModule с loadChildren: 'app/a/a.module#AModule'
  9. ленивая загрузка BModule с loadChildren: 'app/b/b.module#BModule'

Спасибо


person Cec    schedule 07.08.2018    source источник


Ответы (2)


Конечно. CModule играет роль модуля, который большинство разработчиков называют SharedModule.

AModule и BModule получат свою собственную копию CModule.

person Community    schedule 07.08.2018
comment
Привет, что меня беспокоит, так это то, что модули, использующие CModule, загружаются лениво, поэтому мне интересно, не сломается ли приложение, если пользователи сначала будут посещать ротации AModule, а затем маршрутизировать BModule. - person Cec; 07.08.2018
comment
AModule даже не знает, что BModule также использует CModule - person ; 07.08.2018
comment
angular.io/guide/sharing-ngmodules для примера SharedModule. - person ; 07.08.2018

Вы можете иметь их в обоих модулях, и они могут все еще работать, вы можете добавить стратегию предварительной загрузки в свой RouterModule.forRoot(), и оба маршрута будут доступны.

Я предлагаю вам перетащить этот маршрут к другому функциональному модулю, который загружается раньше всех других модулей, использующих этот маршрут. Таким образом, не будет проблем, сработает он или нет.

person k.s.    schedule 07.08.2018