Issue
Это ошибка, которую каждый Angular
разработчик получает в начале.Проблема заключается в недостаточном понимании того, как работает модуль с точки зрения Declaration
из Component
и Directives
. В вашем случае вы Directive
и пытаетесь использовать его в двух разных модулях, поэтомуВы объявили в двух разных Modules
.Но Angular
начинает жаловаться, что вы объявили один и тот же компонент более чем в одном Module
.
Теперь разработчик должен переместить Directive
к более высокому Module
, думая, что он будет доступенво всех его дочерних элементах Modules
, но подождите, пока это не сработает.
Исправление
Фактическая проблема заключается в том, как мы думаем об импорте модуля.Мы думаем, что если бы у нас был Directives
или Component
на более высоком уровне, он будет доступен во всех его дочерних элементах, но не обязательно (это зависит от последовательности выполнения).
Просто подумай иначе.Мой текущий Module
импортирует все необходимые Modules
, которые содержат Directive
и Component
.Это тот случай, когда мы создаем ShareModule
, который содержит все повторно используемые Components
и Directives
, и мы просто импортируем его, где это требуется.
Короче говоря, создайте SharedModule
и объявите ваши общие Directives
и Components
в нем и импортируйте это Module
, где это необходимо.
Пожалуйста, обратитесь к этой хорошей официальной статье на общем модуле - https://angular.io/guide/sharing-ngmodules