Angular 6 CoreModule和SharedModule

时间:2018-07-23 11:00:06

标签: angular

通过阅读angular的文档,我了解到最佳实践是将所有内容拆分为多个模块。

我对自己的项目结构进行了一次快速介绍:https://stackblitz.com/edit/angular-agxuwh

我为其中的每一个都有一些组件,服务和接口:CompaniesContactsActivity Histories。还有4个没有服务和接口的组件:NavHomeAboutContact Us

我正在考虑创建管理面板,因为我认为它应该具有自己的模块,但是首先我要管理上面提到的内容。

在遵循此https://angular.io/guide/styleguide#core-feature-module之后,我将服务放在了核心模块中,因为SharedModule不应该具有提供程序(服务),并且如果它们是延迟加载的,它们可能会被实例化多次,并且SharedModule中的其余内容。

我的问题是:我是否犯了一个错误,但是对于我来说,从文档中还不清楚,什么是正确的方法?第二个问题:我应该将countries.ts (const)validateAllFormFields.ts (function)放在哪里,它们应该在整个应用程序中共享?

我理解这一点:

SharedModule

  
      
  • 使用SharedModulecomponentsdirectives创建一个pipes,您可以在应用程序中的任何地方使用它。此模块应完全由declarations组成,其中大多数已导出。
  •   
  • SharedModule可能会重新导出其他窗口小部件模块,例如CommonModuleFormsModule以及具有您使用最广泛的UI控件的模块。
  •   
  • 由于先前说明的原因,SharedModule不应包含providers。它的任何导入或再导出模块都不应具有提供程序。如果您偏离本指南,请知道您在做什么以及为什么。
  •   
  • SharedModule导入到功能模块中,包括在应用程序启动时加载的功能模块和以后懒加载的功能模块。
  •   

CoreModule

  
      
  • 使用CoreModule为应用程序启动时加载的单例服务创建一个providers
  •   
  • 仅将CoreModule导入根AppModule中。切勿将CoreModule导入任何其他模块中。
  •   
  • 考虑将CoreModule做成没有declarations的纯服务模块。
  •   

0 个答案:

没有答案