Angular 2文档状态“共享功能模块必须由任何预期使用其可声明的模块导入”。为什么必须将SharedModule导入到根模块?
我想知道为什么必须将共享功能模块导入到根模块中。它会增加代码库的复杂性吗?
Angular 2文档状态“共享功能模块必须由任何预期使用其可声明的模块导入”。为什么必须将SharedModule导入到根模块?
我想知道为什么必须将共享功能模块导入到根模块中。它会增加代码库的复杂性吗?
模块是一种声明角度的东西的方法,它定义了这个逻辑块需要什么以及它由哪个逻辑块导出。如果您不在RootModule
中导入SharedModule
,则此SharedModule
中定义的组件/服务/管道/ etc将不可用。例如,如果您希望能够使用某些内置指令(ngIf
,ngFor
等),则需要导入CommonModule
(或BrowserModule
)。
假设您的SharedModule
定义了一个组件:AwesomeComponent
和awesome
作为选择器。如果你想在你的RootModule
中使用这个组件(你为什么不这样做,那太棒了?),你需要导入声明它的模块,否则角会抱怨(或者默默地失败) t知道这个<awesome>
标签。
声明多个模块可以是有用的,如果你想分离的东西,它使您能够独立的库/部分应用程序,您可以重用。如果你制作一个新的应用程序,并意识到你几周前开发的真棒组件,它将完全适合它,如果它有自己的模块,你只需要导入它。
它也允许更容易的捆绑。而不是在每个延迟加载的模块中包含那个SharedModule
(延迟加载的路由需要单独的模块),您将它捆绑/加载一次。
那么它会增加代码复杂度吗?是的,有点,但它有很多优点。
感谢您的反馈。我很感激 – Albert