Angular 2文档声明"共享功能模块必须由任何希望使用它的声明" 的模块导入。
我想知道为什么必须将共享功能模块导入到根模块中。它会增加代码库的复杂性吗?
答案 0 :(得分:1)
模块是一种以角度形式声明内容的方法,它定义了此逻辑块所需的内容以及它所导出的内容。如果您未在SharedModule
中导入RootModule
,则此SharedModule
中定义的组件/服务/管道/等将无法使用。例如,如果您希望能够使用某些内置指令(ngIf
,ngFor
等...),则需要导入CommonModule
(或{{1} })。
让我们说BrowserModule
定义一个组件:SharedModule
,AwesomeComponent
作为选择器。如果你想在你的awesome
中使用这个组件(为什么你不会,它真棒?),你需要导入声明它的模块,否则有角度会抱怨(或失败)默默地说,它不知道这个RootModule
标签。
如果要隔离内容,声明多个模块可能很有用,它使您可以创建可以重复使用的独立库/应用程序的一部分。如果你制作一个新的应用程序,并意识到你几周前开发的那个很棒的组件就完全适合它,如果它有自己的模块,你只需要导入它。
它还允许更容易捆绑。而不是在每个延迟加载的模块中包含<awesome>
(延迟加载的路由需要单独的模块),而是将它捆绑/加载一次。
那么它会增加代码复杂性吗?是的,有点,但它有很多优点。
答案 1 :(得分:0)
模块不会相互继承,所以即使CharactersModule
将导入AppModule
(已导入SharedModule
),CharactersModule
也不能访问共享功能,除非我们导入SharedModule
。这里SharedModule
是不同的模块,CharactersModule
是不同的模块,我们希望在AppModule和SharedModule
中使用CharactersModule
,因此我们需要在两者中导入SharedModule
。< / p>