- SAP Spartacus 标准的 Effects 实现的注入原
- 让 fork 出来的 Github 仓库从远端仓库拖取最新的修改
- SAP Spartacus 如何根据 page layout 获
- SAP Spartacus organization unit
- SAP Spartacus Definition of Done
- 借助 SAP 电商云 Spartacus UI 提供的 Sche
- SAP Spartacus的Component映射
- SAP Spartacus 中的依赖注入 Dependency
- 自定义SAP Spartacus的产品搜索API参数
- Angular 如何根据一个 class 的定义和数据,动态创建
先研究标准的 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的原创文章,尽在:"汪子熙":

网友评论