下列这段代码:
const BASE_URL = new InjectionToken<string>('只是描述');
const injector =
Injector.create({providers: [{provide: BASE_URL, useValue: 'http://localhost'}]});
const url = injector.get(BASE_URL);
console.log(url);
运行时会打印http://localhost.
创建Injector Implementation实例:
创建R3Injector实例:
处理每一个provider:
给provider创建一个实例:
上图的makeRecord相当于工厂函数:
最后将构造的record设置进injector的records map里:
然后执行get方法:
从injector的map里根据injection token读取记录:
hydrate就是根据token来实例化record:
更多Jerry的原创文章,尽在:“汪子熙”: