预先加载的模块-是否在核心模块中导入或导出?

时间:2019-02-10 19:55:52

标签: javascript angular

为了使AppModule更加整洁,我在CoreModule中导入了一个渴望加载的功能模块,该模块(一次)导入了AppModule中。

我发现有趣的是,该应用程序通过在CoreModule中导出或导入功能模块来工作。谁能解释其中的区别?正确的方法是什么?

1 个答案:

答案 0 :(得分:4)

好吧,如果您在FeatureModule中拥有某项功能(主要是可声明的组件,指令或管道,例如),并且您想在CoreModule(已导入)中使用它在您的AppModuleAppModule中,您也必须从CoreModule导出它。

如果您从某个模块导出某些内容,则可以在导入该模块的模块中使用它。

如果您从导入模块的模块中导出该模块,则可以在导入该模块的模块中使用导出模块的功能。

让我们以一个带有CoreModuleAppModuleFeatureModule的示例为例。

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。