乐趣区

关于sap:SAP-电商云-Spartacus-产品明细页面的-OCC-API-是如何被触发的

当拜访如下 url 时,
http://localhost:4200/powerto…

咱们能看到如下的 OCC API 调用:

https://<host>:9002/occ/v2/powertools-spa/cms/pages?pageType=ProductPage&code=3755211&lang=en&curr=USD

这个 OCC API 是 cms-page.connector.ts 触发的。Connector 必定是 effect 调用的,调用时,pageContext 曾经解析结束了。这个 type 为 ProductPage 是如何解析的?

加上打印语句:

果然是被 page effect 调用的:

查看是谁抛出的 CmsActions.LoadCmsPageData 即可。
在 page action 的构造函数里打断点,就晓得谁去 dispatch 的这个 action 了:

看样子咱们要在 cms.service.ts 的 hasPage 办法里持续设置断点了:

这里找到了源头:咱们之前的文章曾经介绍过,把 url 粘贴到浏览器地址栏之后,会触发 Angular 路由器框架 Router 的检测逻辑,如果 url 的片段的确是 RouterModule.forChild 里传入的 routes 数组的片段时,阐明路由匹配胜利,此时须要执行该路由的 canActivate 钩子,只有钩子返回 true,能力真正激活这个路由,加载 route 数据结构里保护的 Component 实例。

上图解释了本文题目的疑难。

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

退出移动版