Angular : IOC的方式:依赖注入

依赖注入 @Component, @Injectable 可以允许别的声明在providers里面的Service等注入到被这两个装饰器装饰的类中

Service等可以被声明在app-module.ts文件的providers中,这样他对全局就是可见的.任何一个组件都可以注入他.

Service也可以被声明在组件的类中 providers: [{ provide: ProductService, useClass: AnotherProductService }]
前面是注入类的类型,后面是实际使用那一个类注入,因为这儿AnotherProductService 实现了ProductService类
这样的话这个Service只能被这个组件或者这个组件的子组件注入.

除了可以使用useClass来声明注入的类之外,还可以使用useFactory来直接创建一个工厂方法,如下图,ProductService用的就是一个工厂方法,里面需要两个参数,一个LoggerService 一个appConfig 这两个依赖都可以通过另一个属性 deps来提供,deps里面声明了这个工厂方法所需要的依赖.其中APP_CONFIG是一个值声明,这个提供器用useValue提供了一个对象.

无论是通过<router-outlet></router-outlet> 还是直接用<组件名></组件名>的方式在组件中嵌套组件,嵌套的组件都是当前组件的子组件

注入器的层级是从下往上的,在组件中如果需要依赖,那么会首先找当前组件的注入器中注册的提供器,如果没有,那么会一层一层的往上找,一直找到应用级注入器.如果没有找到符合条件的提供器,则抛出异常

angular的依赖注入只有一个注入点,就是构造函数constructor

下面是手动调用注入器的方式注入服务的例子:

转载于:https://www.cnblogs.com/cccy0/p/9394014.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值