一、模块
1、特性模块: 纯业务模块,一个顶级组件下挂很多子组件,大部分由declarations组成, 只导出顶出组件,若有服务的生命周期必须和模块相同。
2、路由特性模块:顶级组件只用作导航使用(懒加载),不会导出任何东西,不会被任何模块导入
3、路由模块
4、服务模块,不应该有声明对象,只应该由根组件导入
| 特性模块 | 声明  | 提供商  | 导出什么 | 被谁导入 | 
|---|---|---|---|---|
| 领域 | 有 | 罕见 | 顶级组件 | 特性模块,AppModule | 
| 路由特性 | 有 | 罕见 | 无 | 无 | 
| 路由 | 无 | 是(守卫) | RouterModule | 特性(供路由使用) | 
| 服务 | 无 | 有 | 无 | AppModule | 
| 窗口部件 | 有 | 罕见 | 有 | 特性 | 
entrycomponent入口组件,Angular 编译器只会为那些可以从 entryComponents 中直接或间接访问到的组件生成代码
提供商就相当于说明书,用来指导 DI 系统该如何获取某个依赖的值。
服务导入,优先是prividedin:"root",若指定模块,建议是 providers: [UserService],
原文:https://www.cnblogs.com/cloudsu/p/12096029.html