通过阅读angular的文档,我了解到最佳实践是将所有内容拆分为多个模块。
我对自己的项目结构进行了一次快速介绍:https://stackblitz.com/edit/angular-agxuwh
我为其中的每一个都有一些组件,服务和接口:Companies
,Contacts
和Activity Histories
。还有4个没有服务和接口的组件:Nav
,Home
,About
和Contact Us
。
我正在考虑创建管理面板,因为我认为它应该具有自己的模块,但是首先我要管理上面提到的内容。
在遵循此https://angular.io/guide/styleguide#core-feature-module之后,我将服务放在了核心模块中,因为SharedModule
不应该具有提供程序(服务),并且如果它们是延迟加载的,它们可能会被实例化多次,并且SharedModule
中的其余内容。
我的问题是:我是否犯了一个错误,但是对于我来说,从文档中还不清楚,什么是正确的方法?第二个问题:我应该将countries.ts (const)
和validateAllFormFields.ts (function)
放在哪里,它们应该在整个应用程序中共享?
我理解这一点:
- 使用
SharedModule
,components
和directives
创建一个pipes
,您可以在应用程序中的任何地方使用它。此模块应完全由declarations
组成,其中大多数已导出。SharedModule
可能会重新导出其他窗口小部件模块,例如CommonModule
,FormsModule
以及具有您使用最广泛的UI控件的模块。- 由于先前说明的原因,
SharedModule
不应包含providers
。它的任何导入或再导出模块都不应具有提供程序。如果您偏离本指南,请知道您在做什么以及为什么。- 将
SharedModule
导入到功能模块中,包括在应用程序启动时加载的功能模块和以后懒加载的功能模块。
- 使用
CoreModule
为应用程序启动时加载的单例服务创建一个providers
。- 仅将
CoreModule
导入根AppModule
中。切勿将CoreModule
导入任何其他模块中。- 考虑将
CoreModule
做成没有declarations
的纯服务模块。