调试入口:this.routingService.getNextPageContext()

这个 page context 直接从 store 里读取的,靠调试 selector 是拿不到的。

我们以前学习过,当 Angular router 框架成功将浏览器地址栏的 url,匹配到开发人员用 RouterModule.forChild 传入的 routes 数组时,会抛出 RoutesRecognized 事件,如下图所示:

if (event instanceof RoutesRecognized) {routesRecognized = event;if (!dispatchNavLate && this.trigger !== RouterTrigger.STORE) {this.dispatchRouterNavigation(event);}

Angular router 框架这里提供了一个 hook,可以允许应用开发人员修改下一个 router state,即 nextRouterState 变量:

@Injectable()
export class CustomSerializerimplements fromNgrxRouter.RouterStateSerializer<ActivatedRouterStateSnapshot>

我们自己实现了 Angular router 框架的一个接口:

fromNgrxRouter.RouterStateSerializer

这里硬编码了,只要 routerState 里的参数,出现了 productCode,我们就认为这是一个 Product page:

if (params['productCode']) {context = { id: params['productCode'], type: PageType.PRODUCT_PAGE };}

然后我们的 reducer 被调用:

这些都是之前 serializer populate 出的数据:

这里我们把 navigation target 写入 in-memory state, 这样接下来的 selector,就能从 state 里读取出 product 明细页面的 page context 了:


疑问至此解开。

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

SAP 电商云 Spartacus 产品明细页面的 pageContext 如何获取的?相关推荐

  1. SAP 电商云 Spartacus 产品明细页面的 canActivate 执行逻辑 - isUrlProtected

    调试入口:cms-page.guard.ts 的 canActivat 方法: 输入参数是已经成功匹配了的产品明细页面路由: 判断这个 url 片段是否属于被保护对象: 默认配置为 false: 因此 ...

  2. SAP 电商云 Spartacus 产品明细页面的 OCC API 是如何被触发的

    当访问如下 url 时, http://localhost:4200/powertools-spa/en/USD/jerryproduct/3755211/PSR%2010.8%20LI 我们能看到如 ...

  3. 为什么 SAP 电商云 Spartacus 产品明细页面的自定义 matcher 会重复被调用

    http://localhost:4200/powertools-spa/en/USD/jerryproduct/3755211/PSR%2010.8%20LI 为什么打开一个 product 明细页 ...

  4. SAP 电商云 Spartacus UI 产品明细页面路由路径的自定义配置

    如下图所示,为了减少 SAP 电商云 Spartacus 客户实施时不必要的配置,Spartacus 将不少页面的路由路径的默认配置,定义在如下的 default-routing-config.ts ...

  5. SAP 电商云 Spartacus UI 产品搜索结果的设计明细

    我们使用如下 url 访问 SAP 电商云 Spartacus UI 产品搜索页面: http://localhost:4000/electronics-spa/en/USD/search/sony ...

  6. SAP 电商云 Spartacus UI Proxy Facade 的一个实际例子

    如何理解 SAP 电商云 Spartacus UI 中的 proxy facade? Jerry 这篇文章什么是 SAP 电商云 Spartacus UI 的 proxy façade提供了理论上的解 ...

  7. Mobile first 设计思路在 SAP 电商云 Spartacus UI 中的设计体现一例

    关于 Mobile First 的概念,请查看我这篇文章:什么是前端开发中的 mobile first 策略. 下图是 SAP 电商云 Spartacus UI 的搜索结果页面: 其布局设计:temp ...

  8. SAP 电商云 Spartacus UI ComponentDataProvider defer 工厂函数

    为什么 this.componentService.getItems 最后就触发到 Component-data.provider.ts 工厂函数的执行了? 29行的 getService: getS ...

  9. SAP 电商云 Spartacus UI 里如何捕捉语言设置的更改

    我们知道在 SAP 电商云 Spartacus UI 里,用户可以通过下拉菜单更改当前访问 site 的语言: 监控语言变化的代码: this.subscription.add(this.langua ...

最新文章

  1. RADAR和LIDAR区别分析
  2. 21天mysql_把整个Mysql拆分成21天,轻松掌握,搞定(下)
  3. iqueryable怎么进行操作_钢结构施工要点有哪些?怎么进行操作?
  4. Web前端要学什么语言?需掌握哪些知识?
  5. 机器人加锤石如何放技能q_ADC必须会躲4个技能,前两个训练走位,能躲图4的只有闪现!...
  6. ajax的url可以用变量吗6,如何使用变量设置 Ajax Url
  7. 为什么百度统计里面的广告那么多_里面东西一模一样的桶装方便面为什么比袋装贵那么多?...
  8. 决策树,随机森林,集成学习的算法实现
  9. 旋转式直流无刷Maxon电机与copley驱动器调试
  10. Android系统镜像文件
  11. 增粉的各种方法【微信 / 微博 增加粉丝的108种方法】
  12. 索隆:九山八海,无我不断者。
  13. ROS(indigo) 安装和使用更新版本的Gazebo----3,4,5,6,7 附:中国机器人大赛中型组仿真比赛说明
  14. c语言数独出题程序,C语言实现的数独解题程序
  15. 国人“急功近利”的理由和无奈
  16. 使用python爬取抖音app视频(appium可以操控手机)
  17. ssm问题记录:NoSuchBeanDefinitionException: No qualifying bean of type ‘xxxl‘ available
  18. [附源码]计算机毕业设计SpringBoot高血压分析平台
  19. kafka身份认证 maxwell_Kafka 使用SASL / SCRAM进行身份验证
  20. 南邮ctf-web的writeup

热门文章

  1. Oracle 查看表空间、数据文件的大小及使用情况
  2. 入门demo---Mybatis学习笔记(三)
  3. MobIM仅为开发者提供即时通讯的消息通道服务
  4. React全家桶构建一款Web音乐App实战(九):皮肤切换
  5. Maven 中的pom.xml文件
  6. 如何使用firefox适用于javascript的debugger命令
  7. Boost学习笔记-智能指针
  8. ftp之高级配置——虚拟用户
  9. 每个[NET]开发人员现在应该下载的十种必备工具
  10. 什么是Shell,Shell教程