Это хороший вопрос, и его постоянно спрашивают коллеги из моей компании. Как вы сказали, лучшая практика в официальных документах - иметь CoreModule
и SharedModule
, каждый из которых отвечает за различные проблемы. В большинстве случаев имеет смысл поместить ваши сервисы в «Ядро», а компоненты / директивы / каналы и т. Д. В «Общий».
Но иногда у нас есть исключения и мы хотим сделать следующее:
- Служба в
SharedModule
для управления состояниями / конфигурациями / поведениями для аналога компонентов / директив / каналов
- Компонент в
CoreModule
, который существует только на корневом уровне или динамически создается во время выполнения.
Для сценария 1 вы можете использовать устаревший метод forRoot()
для вашего модуля, чтобы убедиться, что ваша служба инициализируется только один раз. Также стоит отметить, что с Angular 6 вы можете использовать новый синтаксис provideIn: 'root'
, который упрощает эту задачу. Вы можете найти много ресурсов в Интернете.
Для сценария 2 вы обычно помещаете его в entryComponents
.