angular2.0依赖注入

Dependency injection

服务

“依赖注入”是提供类的新实例的一种方式,还负责处理好类所需的全部依赖。大多数依赖都是服务。 Angular 使用依赖注入来提供新组件以及组件所需的服务。


Angular 通过查看构造函数的参数类型得知组件需要哪些服务。 例如,HeroListComponent组件的构造函数需要一个HeroService服务:

app/hero-list.component.ts (constructor)
constructor(private service: HeroService) { }

当 Angular 创建组件时,会首先为组件所需的服务请求一个注入器 (injector)

注入器维护了一个服务实例的容器,存放着以前创建的实例。 如果所请求的服务实例不在容器中,注入器就会创建一个服务实例,并且添加到容器中,然后把这个服务返回给 Angular。 当所有请求的服务都被解析完并返回时,Angular 会以这些服务为参数去调用组件的构造函数。 这就是依赖注入 。

HeroService注入的过程看起来有点像这样:

服务

如果注入器还没有HeroService,它怎么知道该如何创建一个呢?

简单的说,必须在要求注入HeroService之前,在注入器中注册HeroService提供商 Provider。 提供商用于创建并返回一个服务,通常是服务类本身。

我们可以在模块或组件中注册提供商。

通常会把提供商添加到根模块上,以便在任何地方使用服务的同一个实例。

app/app.module.ts (module providers)
providers: [
  BackendService,
  HeroService,
  Logger
],

或者,也可以在@Component元数据中的providers属性中把它注册在组件层:

app/hero-list.component.ts (component providers)
@Component({
  moduleId: module.id,
  selector:    'hero-list',
  templateUrl: 'hero-list.component.html',
  providers:  [ HeroService ]
})

把它注册在组件级表示该组件的每一个新实例都会有一个服务的新实例。

需要记住的关于依赖注入的要点是:

  • 依赖注入渗透在整个 Angular 框架中,被到处使用。

  • 注入器 (injector) 是本机制的核心。

    • 注入器负责维护一个容器,用于存放它创建过的服务实例。

    • 注入器能使用提供商创建一个新的服务实例。

  • 提供商是一个用于创建服务的配方。

  • 提供商注册到注入器。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值