Angular4 依赖注入
什么是依赖注入
是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入
angular中依赖注入的具体使用
注入器:
在组件中的constructor中:
constructor(private productService: ProductService){}
提供器:
在app根组件module中或者在在组件中:
1. providers:[productService] 等价于 第二种
2. providers: [{provider: ProductService, useClass: ProductService}]
3. priveders: [{provide: ProductService, useFactory: () => {}}]
三种声明式提供器
- userClass
- userFactory
userValue
注入器中指定的productService类型是providers中的provider,而provider使用的class是productService,所以注入器中productService的类型就是ProductService。
提供器作用域规则
1.提供器声明在模块时是对所有组件是可见的,所有组件都可以注入。
2.当一个提供器声明在组件时,只对他声明的组件和子组件可见,其他组件不可注入。
3.当声明在模块的提供器和组件的提供器具有相同的token时,声明在组件的提供器会覆盖模块的提供。
4.服务提供器优先声明在模块中,只有服务必须在某个组件可见,对其他组件不可见时才声明在组件中