创建对象及其依赖的其他对象的一种方式。
创造一个服务的对象,所有的服务在程序启动的时候已经被初始化过了,所以只需要创造一个对象然后调用就行了。有利于各个模块的解耦
注入器(Inject)
每个组件都有一个注入器实例看到constructor构造函数声明时,会去整个Angular应用中寻找服务实例
提供器(Provider)
把标识映射到工厂方法中
作用域规则:
当一个提供器声明在一个模块的时候,所有的组件都可以注入
当一个提供器声明在一个组件中,只对这个组件和他的子组件可见,其他组件不可见
当声明在模块的提供器和声明在组件的提供器同一个token,声明在模块的提供器会被声明在组件的提供器覆盖
注入服务
一般情况下我们会优先将服务器提供器声明在模块中,只有服务于某个组件而且需要对其他组件不可见的时候才会声明在组件中。
@Injectable() 是每个服务的基本要素 服务的标记
providedIn的元数据选项
在程序启动的时候,所有的服务会被初始化,当在构造器里注入声明以后,就可以找到这个服务并使用
DI框架;提升开发效率和模块化程度
