Могу ли я объявить директиву внутри модуля и использовать ее только внутри компонентов этого модуля? - PullRequest
0 голосов
/ 15 ноября 2018

Приложение My Angular (v7) состоит из нескольких модулей.У меня есть AppModule, который содержит основные части приложения, и несколько отдельных модулей, которые предоставляют редко используемые части приложения.(Я не загружаю эти другие модули пока лениво, но, вероятно, буду в будущем).

В одном из этих модулей (назовем это OtherModule), у меня есть оба компонентаи директивы.Директивы только используются компонентами в OtherModule.Имеет смысл (для меня) сохранить определение этих директив «инкапсулированным» в OtherModule.

Однако, когда я пытаюсь использовать один из компонентов из OtherModule, я получаю ошибку, если этоКомпонент использует одну из директив OtherModule:

Привязка свойства appДругое не используется никакой директивой во встроенном шаблоне.Убедитесь, что имя свойства написано правильно, и все директивы перечислены в "@ NgModule.declarations

(в этом примере appOther - это директива, определенная в OtherModule).

Вы можете увидеть все это в действии (или нет) в этом StackBlitz .

Я пытался объявить директиву в AppModule, но (а) я нена самом деле не хочется загрязнять этот модуль частными подробностями о том, как OtherModule работает, и (б) он потом жалуется, что директива объявляется дважды.

Что я здесь не так делаю? Это кажется очевидным требованием(и если такое разделение интересов невозможно, тогда зачем нам вообще модули?).

1 Ответ

0 голосов
/ 15 ноября 2018

Взглянув на вашу реализацию, я думаю, что вы должны удалить de * и = "true" и оставить только селектор appOther

Просто так:

<p appOther>

С декларацией модуля все в порядке, вы правильно декларируете директиву в OtherModule и не экспортируете их, вы не можете также объявить ее в AppModule. Если в другой ситуации вы хотите поделиться этой директивой, вы должны объявить ее в общем модуле, который будет

...