为什么必须将SharedModule导入根模块?

时间:2016-12-15 09:30:24

标签: angularjs angular ng-modules

Angular 2文档声明"共享功能模块必须由任何希望使用它的声明" 的模块导入。

我想知道为什么必须将共享功能模块导入到根模块中。它会增加代码库的复杂性吗?

2 个答案:

答案 0 :(得分:1)

模块是一种以角度形式声明内容的方法,它定义了此逻辑块所需的内容以及它所导出的内容。如果您未在SharedModule中导入RootModule,则此SharedModule中定义的组件/服务/管道/等将无法使用。例如,如果您希望能够使用某些内置指令(ngIfngFor等...),则需要导入CommonModule(或{{1} })。

让我们说BrowserModule定义一个组件:SharedModuleAwesomeComponent作为选择器。如果你想在你的awesome中使用这个组件(为什么你不会,它真棒?),你需要导入声明它的模块,否则有角度会抱怨(或失败)默默地说,它不知道这个RootModule标签。

如果要隔离内容,声明多个模块可能很有用,它使您可以创建可以重复使用的独立库/应用程序的一部分。如果你制作一个新的应用程序,并意识到你几周前开发的那个很棒的组件就完全适合它,如果它有自己的模块,你只需要导入它。

它还允许更容易捆绑。而不是在每个延迟加载的模块中包含<awesome>(延迟加载的路由需要单独的模块),而是将它捆绑/加载一次。

那么它会增加代码复杂性吗?是的,有点,但它有很多优点。

答案 1 :(得分:0)

模块不会相互继承,所以即使CharactersModule将导入AppModule(已导入SharedModule),CharactersModule也不能访问共享功能,除非我们导入SharedModule。这里SharedModule是不同的模块,CharactersModule是不同的模块,我们希望在AppModule和SharedModule中使用CharactersModule,因此我们需要在两者中导入SharedModule。< / p>