SAP Spartacus 标准的 Effects 实现的注入原理
先研究标准的 effect 为何可以被 call 到:在 ProductReviewsEffects 构造函数里设置断点:
发现在访问首页时,断点即触发。
为什么 AppModule 启动时,就要加载 ProductReviewEffect?
单击 AppModule,就跳转到我自定义的 AppModule 文件了,但是该文件里并没有 ProductReviewEffect:
这个 EffectFeatureModule 是标准框架的实现:
Spartacus 所有标准的 Effects 实例,都是在下列代码 ngrx-effects.js 里实例化的:
function createEffects(injector, effectGroups, userProvidedEffectGroups) {/** @type {?} */const mergedEffects = [];for (let effectGroup of effectGroups) {mergedEffects.push(...effectGroup);}for (let userProvidedEffectGroup of userProvidedEffectGroups) {mergedEffects.push(...userProvidedEffectGroup);}return createEffectInstances(injector, mergedEffects);
}
问题就是,对于 AppModule 而言,这些 Effects 是从哪里解析出来的?
看一下标准的 Effects 是怎么做的?
export const effects: any[] = [ProductsSearchEffects,ProductEffects,ProductReviewsEffects,ProductReferencesEffects,
];
EffectsModule.forFeature(effects),
解决方案
最后,生效了:
更多Jerry的原创文章,尽在:“汪子熙”:
SAP Spartacus 标准的 Effects 实现的注入原理相关推荐
- SAP Spartacus 标准类型的字段扩展 - type augmentation
The models that are most frequently customized are currently placed in @spartacus/core. The followin ...
- SAP Spartacus B2B 页面 Disable 按钮的显示原理
SAP Spartacus B2B 页面 disable 按钮如下图所示. 这个高亮的 disable 按钮,和左边相邻的 Edit 按钮,实现位于不同的 Component. disable 按钮有 ...
- SAP Spartacus B2B页面Budget页面的设计原理
打开SAP Spartacus My Company菜单,第一个banner即为Budgets页面的入口: http://localhost:4200/powertools-spa/en/USD/or ...
- 使用ConfigModule.withConfig替换SAP Spartacus标准Component
思路为如下示意图: 新建一个Component,将自定义UI放在里面: 在app module里,使用如下代码,将CMS Component的SimpleResponsiveBannerCompone ...
- SAP Spartacus breakpoint服务中platformID的注入逻辑
@Inject(PLATFORM_ID) protected platform: any 这个PLATFORM_ID来自@angular/core: 在platform-browser.js里能查看到 ...
- SAP Spartacus B2B页面内容的动态注入
以Units-detail.component.html为例: cx-org-card的selector里使用ng-content定义了允许动态内容注入的注入点: <div class=&quo ...
- SAP Spartacus Org Unit明细页面的设计原理
该页面分三部分组成. 其中蓝色和绿色两个区域的实现如下:两个section标签页: section是HTML标准的标签之一,每个标签通过h1到h6不等的heading标签标识. 运行时渲染的HTML原 ...
- SAP Spartacus B2B List里的listData$设计原理
UI components do not store response data from observables locally, which means destroy logic can be ...
- SAP Spartacus里的HTTPErrorInterceptor的单元测试设计原理
测试UnKnownErrorHandler是否能正确 处理UnknownError这个状态: 这个handler是import进来的: 调用经过TestBed.inject注入后的http: 执行su ...
最新文章
- 大新闻!HTC旗舰手机已原生支持BCH
- Google Chrome 悄悄升级 WebGL 2.0 标准
- mysql传参数 和 区别_mybatis中#{}和${}传参方式的区别
- AD16 SCH原理图打开正常,PCB图纸打开为空白或仍是上一个界面的解决方法
- 网页类型定义DOCTYPE
- 试驾Marvel R :传统车企认真起来,就没新势力什么事了
- C++_类和对象_C++多态_多态的原理剖析---C++语言工作笔记070
- 深度神经进化大有可为?Uber详解如何用它优化强化学习 | 5篇论文
- aidl使用_Android-Service学习鸭-入门实践-远程服务(bindService方式-AIDL)
- c语言 int (*p)[5] 类型分析
- CMD恶搞命令集,假装自己是黑客
- 易语言解析html实例,易语言解析JSON教程
- HDU 6070 Dirt Ratio
- hub设备_「网络安全」网络设备篇(9)——集线器Hub
- 客户个性分析 聚类 大数据
- jsp中获取不到servlet中的ArrayList
- 卸载win10自带应用
- 161、锐捷交换机如何配置ssh管理
- 利用swagger组件测试excel下载,打开文件乱码。
- linux-mariadb