SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理

我基于 SAP Spartacus library创建了一个自定义的Storefront实现。在其app.module.ts里,我采用自定义的MyCurrentProductService,去替换 SAP Spartacus 标准的CurrentProductService 实现:

SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理_第1张图片

通过AppComponent的构造函数引入OccCartAdapter的依赖:

SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理_第2张图片

启动应用,在解析并加载AppComponent时,检测到输入参数的CurrentProductService是通过 Angular 依赖注入提供的,因此执行getOrCreateInjectable 方法:

SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理_第3张图片

SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理_第4张图片

注意这里的token 指向class CurrentProductService:

SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理_第5张图片

而 CurrentProductService的实例化,发生在下图的代码位置。

其中1和2两处的token指向不一样:
SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理_第6张图片

第二处的token,已经指向自定义的product service了:
SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理_第7张图片

OccCartAdapter也可以通过同样的方式注入:

SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理_第8张图片

更多Jerry的原创文章,尽在:"汪子熙":

你可能感兴趣的:(SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理)