前言
说到注入器不得不说一下控制反转(IoC),控制反转是面向对象编程中的一种设计原则,是将原来在代码中判断选择的内容放到外部,在外部选择,从而降低计算机代码之间的耦合度,其有两种方式:依赖注入(DI)和依赖查找。在依赖注入和依赖查找的时候注入器和提供器就需要使用。接下来就简单介绍一下注入器和提供器。
内容
注入器
1.当一个提供器提供在模块中时,他是对所有组件是可见的,所有组件都可以注入
2.当一个提供器提供在组件中时,他只对声明它的组件及其子组件是可见的,其他组件不可以注入
语法如下:
constructor(private productService: ProductService){…}
提供器
1.当声明在模块中的提供器和声明在组件中的提供器具有相同的token时,声明在组件的提供器会覆盖声明在模块中的提供器
2.服务提供器优先声明在模块中,只有服务必须在某个组件可见,对其他组件不可见时才声明在组件中
语法如下:
providers:[ProductService]
providers:[{provide:ProductService,useClass:ProductService}]
providers:[{provide:ProductService,useClass:AnotherProductService}]
providers:[{provide:ProductService,useFactory:() =>{…}}]
提供器的调取方法1
1.创建一个根目录Test
ng new Test
2.在根目录中创建子文件夹
ng g component product1
3.在根目录中创建子服务
ng g service/product
4.在子服务文件夹中找到product.service.ts
,在里面添加新的类:
export class Product{
constructor(
public id:number,
public title:string,
public price:number,
public desc:string
){
}
然后在export class ProductService { }
中添加
getProduct():Product{
returnnewProduct(0,"iphone7",5999,"最新款苹果手机");
}
最终效果:
import{Injectable}from'@angular/core';
@Injectable()
export