200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Angular2 依赖注入之实例化过程

Angular2 依赖注入之实例化过程

时间:2021-11-12 06:38:59

相关推荐

Angular2 依赖注入之实例化过程

上一篇讲了Angular 依赖注入之注解

这里会介绍 Angular 的注入器和实例化过程,基于 angular@4.1.0-beta.1

Angular 依赖注入过程主要有下面几个重要的部分组成:

Inject 和 Injectable 装饰器解析提供商,构造注入器获取实例化对象

Angular 依赖注入中的一些重要的概念:

Provider :

提供商,下面就是一个Proviver,一共有5种构造提供商的方式:TypeProvider, ValueProvider, ClassProvider, ExistingProvider, FactoryProvider

{ provide: Logger, useClass: Logger }

Token :

令牌,提供商中的第一个参数就是Token,在查找依赖时作为 key 使用。

Injector :

注入器,用于解析依赖和创建对象。

Example

class Engine {start() {console.log(engine start);}}class Car {engine: Engine;constructor(@Inject(Engine) engine) {this.engine = engine;}open() {this.engine.start();console.log(car open);}}let inj = ReflectiveInjector.resolveAndCreate([Car,Engine]);let car = inj.get(Car);car.open();

2. 解析服务提供商,构造注入器

在上面注解完成之后,接下来可以构造 Injector,Injector 首先需要解析 Provider.

let inj = ReflectiveInjector.resolveAndCreate([{provide:Car,useClass:Car},{provide:Engine,useClass:Engine}]);

Provider 的解析主要由 resolveReflectiveProviders() 来完成,解析过程主要分为

provider 参数预处理解析实例化工厂及其依赖合并提供商构造注入器

下面是解析过程的源码

export function resolveReflectiveProviders(providers: Provider[]): ResolvedReflectiveProvider[] {

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。