Я думал, что понял модули Angular, но у меня возникли проблемы с определением наилучшего подхода к структурированию модулей, включающих службы и компоненты, предоставляемые библиотекой.
Библиотека реализует NotificationsComponent
, который зависит от NotificationsService
, который должен быть одноэлементным, поскольку он сохраняет информацию об уведомлении. Потребитель хочет использовать NotificationsComponent
на разных страницах, некоторые из которых находятся внутри AdminPagesModules
, а другие внутри BookPagesModule
.
Скажем, в библиотеке я определяю NotificationsModule
, который "объявляет" и "экспортирует" NotificationsComponent
и "предоставляет" NotificationsService
. Теперь, если я импортирую этот модуль и в AdminPagesModule
, и в BookPagesModules
, чтобы страницы в этих модулях могли использовать NotificationComponent
, я получаю отдельные экземпляры NotificationsService
, которые не будут работать. С другой стороны, если я импортирую NotificationsModule
в свой AppModule
, мне удастся убедиться, что NotificationsService
является синглтоном, используемым во всем приложении, но я не вижу NotificationsComponent
внутри компонентов внутри отдельных функциональных модулей, таких как AdminPagesModule
.
Я видел шаблон, когда один модуль импортирует другой модуль, а затем реэкспортирует его. В этом случае мы бы импортировали NotificationsModule
в AppModule
, а затем повторно экспортировали его, а затем снова импортировали NotificationsModule
в AdminPagesModule
. В этом случае будет ли NotificationsService
одноэлементным в приложении, как я хочу, но NotificationsComponent
по-прежнему будет доступен для компонентов внутри AdminPagesModule
?
Или есть подход к этой проблеме с использованием шаблона SharedModule
?