Мое приложение написано с угловым 5 и разделено на следующие модули:
src
app
core
shared (contains a modal component that can be used by all feature modules)
dashboard (eager loaded, is the entry point to the application)
customer (lazy loaded)
products (lazy loaded)
...
Некоторые основные сведения о моем приложении:
- Рабочие процессы в моем приложении поддерживаются механизмом бизнес-процессов.
В качестве конкретного примера:
Сотрудник А может начать с создания клиента, но ему необходимо
согласие работника Б в процессе. Итак, сотрудник А заканчивает
его текущее задание и назначает его сотруднику Б для дальнейшей обработки.
- Теперь, когда сотрудник B входит в приложение, он видит свою панель инструментов и на своей панели назначенные задачи.
Теперь самое сложное:
- В настоящее время сотрудник B может нажать на назначенную задачу на панели инструментов, и происходит следующее:
- Приложение направляется к клиентскому модулю и отображает модальное окно с формой, связанной с клиентом.
- Что должно произойти:
- Модал отображается как обычно, но приложение не направляет к клиентскому модулю.
- I.e: формы из разных лениво загруженных модулей могут отображаться независимо от текущего представления.
Что я сделал до сих пор:
Я попробовал решение из этого вопроса: https://stackoverflow.com/a/48126510
- В соответствии с ответом я должен был бы вызвать мой модал по ссылке маршрутизатора, как это:
<a href="javascript:void(0)" [routerLink]="['/customer', {outlets: { modal:
['show-modal', 'true'] } } ]">Validate customer data</a>
- Хотя это позволяет мне показывать форму из функционального модуля в общем виде, но опять же угловые маршруты к клиентскому модулю.
Теперь мой вопрос: как решить эту проблему?
Должен ли я создать новый общий модуль, который извлекает все соответствующие формы из лениво загруженных модулей?
С помощью этой опции я могу выполнить свое требование, но тогда я бы перепутал части бизнес-логики всех модулей. Принцип «разделения интересов» будет нарушен, что также приведет к более высокой сложности.
Так что ты думаешь? У вас есть идея или намек, как решить эту проблему?