Angular依赖注入

    什么是依赖注入我就不解释了,很多编程语言里面都有,在angular中如何使用学会就好。在angular中使用依赖注入有了个名词,一个叫注入器,另一个叫提供器。

    注入器:将通过组建的构造函数注入组建所需要的对象。

constructor(private myService: MyService){...}

       上面的代码,我们申明了一个myService的服务,在这个属性上我们指明了这个属性的类型是MySercice. Angular会在整个应用中寻找一个MySercice的实例对象,如果被找到就会自动注入给myService对象。如果没找到,就会异常报错。

      上面讲到要去找一个实例对象,那这个对象我们如何提供给他,让它能够得到实例化对象。我们这个过程叫设置提供器。

通常我们在组建或者模块中声明一个提供器。

providers:[MyService]

上面这行提供器的声明等同于

providers:[{provide: MyService, useClass: MyService}]

它的意思就是provide的token是MyService,它的useClass类型也是MyService,这样就可以向上面那样简写。useClass是决定类型,如果类型不一样,那就不能简写。如

providers:[{provide: MyService, useClass: OtherServiceClass}]

提供器还有一种写法,useClass参数变成一个工厂函数 

provides: [{
 prpvode: ProductService,
 useFactory: (logger: Logger Service, appConfig) =>{
   is(appConfig.isDev){
     return new ProductService(logger);
   }else{
     return new AnotherProductService(logger);
   }
 },
 dips:[LoggerService, "IS_DEV_ENV"]
}, LoggerService,
  {
    provide: "APP_CONFIG", useValue: {isDev: false}
  }
],

 

提供器作用域:

1.当声明在模块中(@NgModule)的提供器,对所有组建可见,整个应用有效;

2.当生命在组建中(@componnt)的提供器,只对该组建,以及该组建的子组建有效;

3.当声明在模块中和组建中的提供器具有相同的token,那么组建中的提供器会覆盖掉模块中的提供器;

4.通常我们优先把提供器声明在模块中,而不是组建中,除非这个提供器不想对其他组建可见。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值