кодесурса
«Угловое

Часто задаваемые вопросы по NgModule

script1adsense2code
script1adsense3code

В этом руководстве мы постараемся ответить на большинство часто задаваемых вопросов о NgModules.

Какие классы я должен добавить в массив объявлений?

Добавьте декларируемые классы-компоненты, директивы и каналы в список объявлений.

Объявите эти классы ровно в одном модуле приложения. Объявите их в модуле, если они принадлежат этому конкретному модулю.

Что декларируется?

Объявление - это типы классов - компоненты, директивы и каналы, которые вы можете добавить в список объявлений модуля. Это единственные классы, которые вы можете добавить в объявления.

Какие классы не следует добавлять в объявления?

Добавляйте только декларируемые классы в список объявлений NgModule.

Не объявляйте следующее:

  • Класс, который уже объявлен в другом модуле, будь то модуль приложения, @NgModule или сторонний модуль.
  • Массив директив, импортированных из другого модуля. Например, не объявляйте FORMS_DIRECTIVES из @ angular / forms, потому что FormsModule уже объявляет его.
  • Модульные занятия.
  • Классы обслуживания.
  • Неангулярные классы и объекты, такие как строки, числа, функции, модели сущностей, конфигурации, бизнес-логика и вспомогательные классы.

Зачем указывать один и тот же компонент в нескольких свойствах NgModule?

AppComponent часто указывается как в объявлениях, так и в начальной загрузке. Вы можете увидеть тот же компонент, который указан в декларациях, экспорте и entryComponents.

Хотя это кажется избыточным, эти свойства имеют разные функции. Членство в одном списке не подразумевает членство в другом списке.

AppComponent может быть объявлен в этом модуле, но не загружен.

AppComponent может быть загружен в этом модуле, но объявлен в другом функциональном модуле.

Компонент может быть импортирован из другого модуля приложения (поэтому вы не можете объявить его) и реэкспортироваться этим модулем.

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

Что означает «Не удается связать с« x », поскольку это не известное свойство« y »»?

Эта ошибка часто означает, что вы не объявили директиву «x» или не импортировали модуль NgModule, к которому принадлежит «x».

Что я должен импортировать?

Импортируйте NgModules, на открытые (экспортируемые) декларируемые классы которых вы должны ссылаться в шаблонах компонентов этого модуля.

Это всегда означает импорт CommonModule из @ angular / common для доступа к директивам Angular, таким как NgIf и NgFor. Вы можете импортировать его напрямую или из другого модуля NgModule, который реэкспортирует его.

Импортируйте FormsModule из @ angular / forms, если ваши компоненты имеют [(ngModel)] выражения двустороннего связывания.

Импортируйте общие и функциональные модули, когда компоненты этого модуля включают в себя их компоненты, директивы и каналы.

Импортируйте BrowserModule только в корневой AppModule.

Должен ли я импортировать BrowserModule или CommonModule?

Модуль корневого приложения, AppModule, почти каждого приложения браузера должен импортировать BrowserModule из @ angular / platform-browser.

BrowserModule предоставляет сервисы, которые необходимы для запуска и запуска приложения браузера.

BrowserModule также реэкспортирует CommonModule из @ angular / common, что означает, что компоненты в модуле AppModule также имеют доступ к директивам Angular, которые нужны каждому приложению, например NgIf и NgFor.

Не импортируйте BrowserModule в любой другой модуль. Функциональные модули и модули с отложенной загрузкой должны импортировать CommonModule. Им нужны общие директивы. Им не нужно переустанавливать поставщиков приложений.

Импорт CommonModule также освобождает функциональные модули для использования на любой целевой платформе, а не только в браузерах.

Что я должен экспортировать?

Экспортируйте декларируемые классы, на которые компоненты в других NgModules могут ссылаться в своих шаблонах. Это ваши публичные занятия. Если вы не экспортируете декларируемый класс, он остается закрытым, видимым только для других компонентов, объявленных в этом NgModule.

Вы можете экспортировать любой декларируемый класс - компоненты, директивы и каналы - независимо от того, объявлен он в этом NgModule или в импортированном NgModule.

Вы можете реэкспортировать все импортированные модули NgModules, которые эффективно реэкспортируют все их экспортируемые классы. NgModule может даже экспортировать модуль, который он не импортирует.

Что я не должен экспортировать?

Не экспортируйте следующее:

  • Частные компоненты, директивы и каналы, которые вам нужны только внутри компонентов, объявленных в этом NgModule. Если вы не хотите, чтобы другой NgModule видел его, не экспортируйте его.
  • Не декларируемые объекты, такие как сервисы, функции, конфигурации и модели объектов.
  • Компоненты, которые загружаются только динамически маршрутизатором или при начальной загрузке. Такие входные компоненты никогда не могут быть выбраны в шаблоне другого компонента. В то время как нет никакого вреда в их экспорте, также нет никакой выгоды.
  • Чистые сервисные модули, которые не имеют публичных (экспортируемых) объявлений. Например, нет смысла реэкспортировать HttpClientModule, потому что он ничего не экспортирует. Его единственная цель - добавить провайдеров http-услуг в приложение в целом.

Предыдущий: Разделение модулей
Далее: Внедрение зависимостей в угловых

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code