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

Angularjs 为什么必须将SharedModule导入根模块?,angularjs,angular,ng-modules,Angularjs,Angular,Ng Modules,Angular 2文档声明“共享功能模块必须由任何希望使用其声明项的模块导入” 我想知道为什么必须将共享功能模块导入根模块。它会增加代码库的复杂性吗 模块不会相互继承,因此,即使CharactersModule将由AppModule导入(它已经导入了SharedModule),除非我们导入SharedModule,否则CharactersModule无法访问共享功能。这里的SharedModule是一个不同的模块,CharactersModule是一个不同的模块,我们想在AppModule和Ch

Angular 2文档声明“共享功能模块必须由任何希望使用其声明项的模块导入”


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

模块不会相互继承,因此,即使
CharactersModule
将由
AppModule
导入(它已经导入了
SharedModule
),除非我们导入
SharedModule
,否则
CharactersModule
无法访问共享功能。这里的
SharedModule
是一个不同的模块,
CharactersModule
是一个不同的模块,我们想在AppModule和
CharactersModule中使用
SharedModule
,所以我们需要在这两个模块中导入
SharedModule

模块是一种以角度声明内容的方法,它定义这个逻辑块需要什么以及它导出什么。如果未在
RootModule
中导入
SharedModule
,则此
SharedModule
中定义的组件/服务/管道/etc将不可用。例如,如果您希望能够使用某些内置指令(
ngIf
ngFor
,等等),则需要导入
CommonModule
(或
BrowserModule

假设您的
SharedModule
定义了一个组件:
AwesomeComponent
,使用
awesome
作为选择器。如果你想在你的
RootModule
中使用这个组件(为什么你不呢,它太棒了?),你需要导入声明它的模块,否则angular会抱怨(或者无声地失败)它不知道这个
标记

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

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


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

谢谢您的反馈。我很感激