angular – 如何确定是否应将模块导入CoreModule或SharedModule

在angular4应用程序中,给出了以下模块:

> ReactiveFormsModule,
> FormsModule,
> HttpModule,
> TranslateModule,(翻译模块)
> AgGridModule.withComponents([]),(表框架)
> DatepickerModule.forRoot(),(以及ngx-bootstrap的一般模块)

导入它们的正确位置在哪里:CoreModule或SharedModule?

提前致谢

最佳答案 这取决于是否:

>这些模块定义了可声明的类型:组件,指令或管道.
>共享模块用于延迟加载

如果他们定义了声明并且您想要重用它们,那么最好将模块导入Shared模块.如果没有,请将它们放入Core模块.

如果在延迟加载中使用共享模块,那么您不希望创建该服务的另一个实例,并应将它们导入到Core模块中.通常这些模块定义了forRoot或forChild方法,例如DatepickerModule.forRoot().

因此,对于有问题的模块:

> ReactiveFormsModule – 共享
> FormsModule – 共享
> HttpModule – 核心
> TranslateModule – 核心(有服务)
> AgGridModule.withComponents([]) – 共享
> DatepickerModule.forRoot() – 核心

有关更多信息,请阅读Avoiding common confusions with modules in Angular

点赞