依赖注入是angular中特别基础和重要的概念。是从java等后端语言借鉴过来的。
4-13 依赖注入(1)
之前我们已经遇到了。在构造函数内声明变量,注入
4-13 依赖注入(1)
要写可以被人注入的类,就要加注解
4-13 依赖注入(1)
那么怎么new出来来呢。是在provider这个数组里。
provider会把这个模块,想要提供的服务,做一些标识。一个是标识符,一个是要怎样构造这个东西。
4-13 依赖注入(1)

声明一个类Product
4-13 依赖注入(1)
创建订单类,构造函数内声明product必须要New一个Product对象出来。
4-13 依赖注入(1)
假设两个类是两个不同的人写的。后来又给Product加了一个color
4-13 依赖注入(1)
那么引用它的地方,在new product的时候也要修改
4-13 依赖注入(1)

在构造里面传进来
4-13 依赖注入(1)
但是终究还是要有个地方把它new 出来。
4-13 依赖注入(1)

表示这个类是可注入的。
4-13 依赖注入(1)
然后把构造的东西,交给系统来处理。在angular中,我们可以使用Injector
4-13 依赖注入(1)
在里面要提供一个Provider数组。
4-13 依赖注入(1)
在provider数组里面,用来描述你这些东西怎么去创建。
比如说这个Product。
下面provide这是一个标识符。
4-13 依赖注入(1)
标识符,我们可以使用useClass,使用类Product
4-13 依赖注入(1)
有时候偶需要做特殊处理,我们就用useFactory,工厂返回一个,
4-13 依赖注入(1)
返回一个New的 Product
4-13 依赖注入(1) 
他看到标识Product那么返回的就是New 出来的Product大米手机。
4-13 依赖注入(1)
我们拿angular的Inject实际上是把所有的对象都已经构造好了。而且默认是单例的,所有类默认只有一份,
大部分时候注入的时候,我们需要的是一个服务。服务大部分情况下是不需要再new一个实例

如果我们自己在上面new出来一个东西 我们还可以使用useExisting。用我们现存的类放在这个实例里面。
useValue:有的时候我们不需要注入一个类。我们就想得到某一个配置或者属性,这个时候我们可以用useValue。因为我们没有没办法把一个String当做一个类型去Provider出来。所以有的时候我们需要另外一种方式去提供,
4-13 依赖注入(1)
还有一个属性deps
4-13 依赖注入(1)
描述Product里面的依赖性。如果你还依赖Product的其他东西,那么你就需要在这里数组里面提供一下。
4-13 依赖注入(1)
声明订单的
4-13 依赖注入(1)
订单的类依赖于Product
4-13 依赖注入(1)
从里面取product
4-13 依赖注入(1)
前端页面输出 。打印出来的就是这个产品。
4-13 依赖注入(1)
再把订单打印出来
4-13 依赖注入(1)
在它里面就是product
4-13 依赖注入(1)

我们平时在使用的时候,不需要这样手动的写出来
4-13 依赖注入(1)

我们只需要在类上加注解
4-13 依赖注入(1)
然后直接在模块的providers数组内加上这个类就可以了。
4-13 依赖注入(1)
如果是Factory的这种
4-13 依赖注入(1)
那就必须要自己声明一下
4-13 依赖注入(1)
 

结束

 

相关文章:

  • 2021-11-29
  • 2021-08-25
  • 2021-06-24
  • 2021-10-03
  • 2021-07-15
  • 2021-10-07
猜你喜欢
  • 2021-05-05
  • 2022-12-23
  • 2021-10-05
  • 2021-11-19
  • 2022-12-23
  • 2021-08-09
相关资源
相似解决方案