为了使AppModule更加整洁,我在CoreModule中导入了一个渴望加载的功能模块,该模块(一次)导入了AppModule中。
我发现有趣的是,该应用程序通过在CoreModule中导出或导入功能模块来工作。谁能解释其中的区别?正确的方法是什么?
答案 0 :(得分:4)
好吧,如果您在FeatureModule
中拥有某项功能(主要是可声明的组件,指令或管道,例如),并且您想在CoreModule
(已导入)中使用它在您的AppModule
或AppModule
中,您也必须从CoreModule
导出它。
如果您从某个模块导出某些内容,则可以在导入该模块的模块中使用它。
如果您从导入模块的模块中导出该模块,则可以在导入该模块的模块中使用导出模块的功能。
让我们以一个带有CoreModule
,AppModule
和FeatureModule
的示例为例。
FeatureModule
中有一个声明的FeatureComponent
。如果要在FeatureComponent
中使用此CoreModule
,则必须从FeatureComponent
导出FeatureModule
,然后将FeatureModule
导入{ {1}}。
现在,如果您也想在CoreModule
中使用FeatureCompoent
。您可以简单地从AppModule
export
FeatureModule
。而且,由于您已经将CoreModule
导入了CoreModule
中,因此您可以访问AppModule
的所有导出成员,而CoreModule
就是其中之一。>
Angular's Docs所说的是为了帮助您更好地理解:
在此NgModule中声明的组件,指令和管道的集合,可在作为导入此NgModule的NgModule的一部分的任何组件的模板中使用。导出的声明是模块的公共API。
可声明的属于一个,并且仅属于一个NgModule。一个模块可以在其导出中列出另一个模块,在这种情况下,该模块的所有公共声明都将导出。
默认情况下,声明是私有的。如果此ModuleA不导出UserComponent,则仅此ModuleA中的组件可以使用UserComponent。
ModuleA可以导入ModuleB,也可以将其导出,从而使ModuleB的导出可用于导入ModuleA的NgModule。