簡體   English   中英

預先加載的模塊-是否在核心模塊中導入或導出?

[英]Eagerly loaded module - Imported or Exported in core module?

為了使我的AppModule更加整潔,我在CoreModule中導入了一個渴望加載的功能模塊,該模塊(一次)導入了AppModule。

我發現有趣的是,該應用程序可以通過在CoreModule中導出或導入功能模塊來工作。 誰能解釋其中的區別? 正確的方法是什么?

好吧,如果該FeatureModule具有某個功能(通常是一個可聲明的組件,如Component,Directive或Pipe),並且您想在CoreModule (已將其導入到AppModule )或AppModule使用它,您將擁有也可以從CoreModule導出它。

如果您從某個模塊導出某些內容,則可以在導入該模塊的模塊中使用它。

而且,如果您從導入模塊的模塊中導出該模塊,則可以在導入該模塊的模塊中使用導出模塊的功能。

讓我們以帶有CoreModuleAppModuleFeatureModule的示例為例。

FeatureModule具有在其中聲明的FeatureComponent 如果要在CoreModule使用此FeatureComponent ,則必須從FeatureModule導出FeatureComponent ,然后在CoreModule導入FeatureModule

現在,如果您也想在AppModule使用FeatureCompoent 您只需從CoreModule export FeatureModule即可。 而且,由於您已經將CoreModule導入了AppModule中, AppModule您可以訪問CoreModule所有導出成員, FeatureModule就是其中之一。

這是Angular的文檔所說的,以幫助您更好地理解:

在此NgModule中聲明的組件,指令和管道的集合,可以在作為導入此NgModule的NgModule的一部分的任何組件的模板中使用。 導出的聲明是模塊的公共API。

可聲明的屬於一個,並且僅屬於一個NgModule。 一個模塊可以在其導出中列出另一個模塊,在這種情況下,該模塊的所有公共聲明都將導出。

聲明默認為私有。 如果此ModuleA不導出UserComponent,則僅此ModuleA中的組件可以使用UserComponent。

ModuleA可以導入ModuleB,也可以將其導出,從而使ModuleB的導出可用於導入ModuleA的NgModule。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM