2017-01-24 2 views
0

Это может звучать глупо, но я хотел бы знать, есть ли способ импорта модуля один раз и сделать его доступным для всех дочерних модулей.Угловая 2 использует модуль без импорта

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

Я попытался поместить его только в модуль приложения, экспортируя его, но он не кажется эффективным.

Так что мой вопрос: Можно ли объявить модуль в модуле приложения, чтобы мы могли использовать его без объявления его в дочерних модулях?

+0

Это зависит от того, как вы относитесь к ребенку модулей. Если они являются многоразовыми частями, которые могут использоваться в нескольких проектах, правильная вещь заключается в том, чтобы указывать зависимость модуля несколько раз. – estus

ответ

1

Это зависит от того, что содержит модуль.

Возьмите HttpModule с углового, например. Вы можете просто импортировать его один раз в корневой модуль, а затем ввести службу Http в любом месте приложения. Это связано с тем, что он содержит услуги (среди прочего) и услуги, объявленные в @NgModule.providers, инъектируются по всему миру.

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

Что вы можете сделать для смягчения проблем, создайте SharedModule, которые будут повторно экспортировать все функции, которые будут повторно использоваться во всем приложении. Таким образом, вам нужно импортировать только один модуль в другие модули, требующие совместной работы. Это означает, что у вас есть по крайней мере один импорт для каждого модуля, но это уже так, так как вам, скорее всего, понадобится что-то вроде CommonModule во всех ваших модулях. (Я считаю, что это SharedModule техникой является то, что официальный документ рекомендует в Module section).

+0

Вот что я подумал. Я уже использую sharedModule с сервисами, поэтому я знал, что он может быть использован, но я бы хотел сделать то же самое с компонентами. Спасибо за интеллект. – trichetriche

0

общий модуль для этого proplem.this - это то, что вы ищете.

Более подробной информации вы можете посетить эту аналогичную нить в so

также здесь хорошая документация об общих модулях в угловых io