angular 2 中的 DI
DI in angular 2
我正在研究 angular DI 容器,我需要一些信息。
事实上,阅读 API,似乎 Injector class 在工厂参数中接受一个绑定列表,并解析它以获取一个 ResolvedBinding 列表。
注意:https://angular.io/docs/js/latest/api/di/
我想知道系统如何管理 Binding 和 ResolvedBing 之间的转换,因为 :
- 绑定可以return一个值
- 绑定可以return一个别名
- 绑定可以return一个class
- 绑定可以return一个工厂
ResolvedBinding 构造函数如下:
constructor(key:Key, factory:Function,...)
看起来 return 工厂是可以的(而且 class,如果我们承认 class 每次都是通过工厂创建的),但是如果我需要 return 只有一个值? fw 是否创建了一个工厂来专门 return 值?
传递给注入器创建的绑定并不是 return 这些值之一。绑定从字面上表示绑定配置本身。
您可能知道,绑定获取一个令牌并使用工厂函数告诉注入器如何创建特定类型的实例。所以你在这里提到的工厂函数可以是 .toClass()
、.toFactory()
、.toValue()
.
配方在创建 ResolvedBinding
之前已标准化。以下是应该解决问题的 LOC:https://github.com/angular/angular/blob/master/modules/angular2/src/di/binding.ts#L221-L246
我正在研究 angular DI 容器,我需要一些信息。
事实上,阅读 API,似乎 Injector class 在工厂参数中接受一个绑定列表,并解析它以获取一个 ResolvedBinding 列表。
注意:https://angular.io/docs/js/latest/api/di/
我想知道系统如何管理 Binding 和 ResolvedBing 之间的转换,因为 :
- 绑定可以return一个值
- 绑定可以return一个别名
- 绑定可以return一个class
- 绑定可以return一个工厂
ResolvedBinding 构造函数如下:
constructor(key:Key, factory:Function,...)
看起来 return 工厂是可以的(而且 class,如果我们承认 class 每次都是通过工厂创建的),但是如果我需要 return 只有一个值? fw 是否创建了一个工厂来专门 return 值?
传递给注入器创建的绑定并不是 return 这些值之一。绑定从字面上表示绑定配置本身。
您可能知道,绑定获取一个令牌并使用工厂函数告诉注入器如何创建特定类型的实例。所以你在这里提到的工厂函数可以是 .toClass()
、.toFactory()
、.toValue()
.
配方在创建 ResolvedBinding
之前已标准化。以下是应该解决问题的 LOC:https://github.com/angular/angular/blob/master/modules/angular2/src/di/binding.ts#L221-L246