- 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 构造函数里设置断点:
![](https://img.haomeiwen.com/i2085791/52b8b347ac23744d.png)
发现在访问首页时,断点即触发。
![](https://img.haomeiwen.com/i2085791/6879f06ca146995d.png)
为什么 AppModule 启动时,就要加载 ProductReviewEffect?
![](https://img.haomeiwen.com/i2085791/ffc14fc855c667a4.png)
单击 AppModule,就跳转到我自定义的 AppModule 文件了,但是该文件里并没有 ProductReviewEffect:
![](https://img.haomeiwen.com/i2085791/e20144d5285bb62a.png)
这个 EffectFeatureModule 是标准框架的实现:
![](https://img.haomeiwen.com/i2085791/a6ff097d533034f7.png)
Spartacus 所有标准的 Effects 实例,都是在下列代码 ngrx-effects.js 里实例化的:
![](https://img.haomeiwen.com/i2085791/0b469f9ce7fd7738.png)
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);
}
![](https://img.haomeiwen.com/i2085791/f1aef2ae22e7662f.png)
问题就是,对于 AppModule 而言,这些 Effects 是从哪里解析出来的?
![](https://img.haomeiwen.com/i2085791/e04860196ea59642.png)
看一下标准的 Effects 是怎么做的?
![](https://img.haomeiwen.com/i2085791/dcd95052ea2ba969.png)
![](https://img.haomeiwen.com/i2085791/5e60353baf91f9ec.png)
export const effects: any[] = [
ProductsSearchEffects,
ProductEffects,
ProductReviewsEffects,
ProductReferencesEffects,
];
EffectsModule.forFeature(effects),
解决方案
![](https://img.haomeiwen.com/i2085791/f7423a1a47199895.png)
![](https://img.haomeiwen.com/i2085791/8e16e6229d1c7428.png)
最后,生效了:
![](https://img.haomeiwen.com/i2085791/4bf1e9de5a8e59b6.png)
更多Jerry的原创文章,尽在:"汪子熙":
![](https://img.haomeiwen.com/i2085791/97c4752c0e619c44.png)
网友评论