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

时间:2017-09-20 09:35:16

标签: angular

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

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

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

提前致谢

3 个答案:

答案 0 :(得分:1)

这取决于是否:

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

如果他们定义了声明并且您想重复使用它们,那么将模块导入Shared模块会更好。如果他们不这样做,请将它们放入Core模块。

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

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

  • ReactiveFormsModule - shared
  • FormsModule - shared
  • HttpModule - 核心
  • TranslateModule - core(有服务)
  • AgGridModule.withComponents([]) - 共享
  • DatepickerModule.forRoot() - core

有关详细信息,请参阅Avoiding common confusions with modules in Angular

答案 1 :(得分:0)

导入模块的最佳方式。我希望你使用页面延迟加载。

这些模块应导入Root / Core模块

  

ReactiveFormsModule,FormsModule,HttpModule,

这是可选的,您可以在Root / Core中导入,只需在页面模块中单独导入所有页面即可。

  

TranslateModule()

这些模块可以导入相关页面的各个模块。

  

AgGridModule.withComponents([]),(表框架)   DatepickerModule.forRoot(),(以及ngx-bootstrap的一般模块)

答案 2 :(得分:0)

并且每个根组件和根定义应该放在CoreModule或AppModule中吗?

相关问题