这个方法位于类CmsPageGuardService内。

当我们请求一个实际并不存在的page时,

因为1这个path对应的route configuration里的protected字段为undefined,所以不算是protected route,因此canActivate返回true.

进入this.routingService.getNextPageContext方法。

该方法从ngrx store里用SELECT取出Observable:

此时取出的page context已经不是homepage,而是1了:

试图取这个pageLabelOrId为1的page,当然取不到数据:

因此进入this.service.canActivateNotFoundPage:

而我在浏览器地址栏里输入1之后,page context何时改变的呢?

答案是在ngrx-router.store.js里,调用537行我们自己实现的serializer, 将包含了electronics-spa/en/USD/1的RouterStateSnapshot,序列化成一个新的nextRouterState:

新的page context 对象在此处生成:

然后通过serializer返回给调用者,dispatch给ngrx store:

538行执行完毕之后,再进入我们的router.reducer.ts:

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

不正常情况下的SAP Spartacus 404 Not found页面显示:

正常情况下的SAP Spartacus 404 Not found页面显示:

SAP Spartacus 404 Not found页面的显示机制 - canActivateNotFoundPage相关推荐

  1. 如何让SAP Spartacus的非英语页面正常显示

    如下图所示,当修改Spartacus的语言成德语时,我们在界面上看到很多用大括号包裹起来的占位符,这些占位符是Spartacus internationalization(i18n)支持的resour ...

  2. SAP Spartacus PageLayoutComponent 如何知道自己应该显示哪些具体内容

    我们以前介绍过,经过 SAP Spartacus 路由配置后的 routes 数组,其 route 数据结构的 Component 属性,清一色指向 generic 的 PageLayoutCompo ...

  3. SAP Spartacus not found的页面处理机制

    当我们跳转到一个SAP Spartacus里实际并不存在的页面时: 首先会将url里的值比如1,作为pageLabelOrID的参数值,去Commerce Cloud后台读取对应的content pa ...

  4. SAP Spartacus split view控制同屏显示最大视图数的配置

    位于文件_split-view.scss内: 修改–cx-max-views的值.改为1的效果,同屏只允许最多一个view处于激活状态: 修改成3: 同屏最多显示3个视图: 更多Jerry的原创文章, ...

  5. SAP Spartacus Org Unit明细页面的工具栏按钮设计

    工具栏上肉眼可见两个按钮:Edit和Disable 其中Edit按钮通过a标签实现: 而disable通过自定义的cx-org-toggle-status实现: 从最后渲染出的html页面里能看出,c ...

  6. SAP Spartacus Org Unit明细页面的设计原理

    该页面分三部分组成. 其中蓝色和绿色两个区域的实现如下:两个section标签页: section是HTML标准的标签之一,每个标签通过h1到h6不等的heading标签标识. 运行时渲染的HTML原 ...

  7. SAP Spartacus Organization Unit User页面的实现层级结构

    右边这个页面的实现细节: 层级结构如下: (1) cx-org-unit-user-list, Component为UnitUserListComponent: (2) cx-org-sub-list ...

  8. SAP Spartacus的用户登录页面设计

    点击sign in之后,先取token: https://spartacus-dev0.eastus.cloudapp.azure.com:9002/authorizationserver/oauth ...

  9. SAP Spartacus的自定义静态页面

    新建一个StaticRouteModule: import { CommonModule } from '@angular/common'; import { NgModule } from '@an ...

最新文章

  1. html打印在一页面布局,html – CSS打印布局 – 单页打印
  2. python爬虫提取教学_python爬虫的基本抓取
  3. EVEREST Corporate Edition 使用SQL保存数据的简易方法
  4. python小项目案例-拯救Python新手的几个项目实战
  5. RMAN深入解析之--控制文件
  6. 什么是脱离文档流?什么是文档流?
  7. 【CV】YOLO算法最全综述:从YOLOv1到YOLOv5
  8. linux之cat命令详解
  9. jsonp的简单学习
  10. 程序员面临 35 岁危机?网友:我 70 了,依然在写程序
  11. Android10 root,Android Q系统Magisk完美实现ROOT
  12. SCRUM 系列之一 ----- 认识SRCUM
  13. 拖拽文件作为文件输入
  14. 提前三天教你们python制作万能抢购神器,学不会就准备过光棍节吧
  15. A065_运行前端_跨域_列表_删除
  16. 《卜算子·咏梅》 陆游
  17. 结果和过程到底哪个重要?
  18. 再度盈利,搜狐稳了?
  19. dpo指标详解买入绝技_DPO指标详解:dpo指标使用技巧
  20. 转贴:关于克尔凯郭尔

热门文章

  1. 08.Eclipse下Ndk开发(使用fmod实现QQ变声功能)
  2. 微软Power BI技术文章与资源目录
  3. Log保存文件-Android
  4. 专家称 AI 可以在 120 年内接管人类的所有工作
  5. 【VMCloud云平台】Demo应用搭建(二)
  6. Hibernate注解使用以及Spring整合
  7. 路由 交换 网桥 相关转贴
  8. Jython 安装使用
  9. C#互操作性平台调用基础知识
  10. CLR via C# (二)