zl程序教程

您现在的位置是:首页 >  前端

当前栏目

Angular Injector.create的工作原理

Angular原理 工作 create
2023-09-14 09:04:01 时间

下列这段代码:

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的原创文章,尽在:“汪子熙”: