DI角2

时间:2015-05-29 10:05:16

标签: angular typescript dependency-injection angular2-di

我实际上正在研究角度DI容器,我需要一些信息。

实际上,在阅读API时,似乎Injector类在工厂参数中接受Binding列表,并将其解析为获取ResolvedBinding列表。

注意:https://angular.io/docs/js/latest/api/di/

我想知道系统如何管理Binding和ResolvedBing之间的转换,因为:

  • 绑定可以返回值
  • 绑定可以返回别名
  • 绑定可以返回一个类
  • 绑定可以返回工厂

ResolvedBinding构造函数如下:

constructor(key:Key, factory:Function,...)

似乎可以在需要的时候返回工厂(而且如果我们承认每次都是通过工厂创建类的话,那么这个类),但是如果我只需要返回一个值呢? fw是否创建了一个专门返回值的工厂?

1 个答案:

答案 0 :(得分:2)

传递给注入器创建的绑定并不真正返回其中一个值。绑定字面上表示绑定配置本身。

正如您可能知道的那样,绑定获取令牌并使用工厂函数告诉注入器如何创建特定类型的实例和实例。因此,您在此处提及的工厂功能可以是.toClass().toFactory().toValue()

在创建ResolvedBinding之前,将配方标准化。以下是应该清理的LOC:https://github.com/angular/angular/blob/master/modules/angular2/src/di/binding.ts#L221-L246