我们之前介绍过SAPSpartacus路由配置后的routes数组,其路由数据结构的Component属性,都指向泛型PageLayoutComponent,那么后者知道应该加载哪个Angular组件数据?我们先看看哪些模板调用了PageLayoutComponent的selector:只有三个地方:运行时有四个地方,这并不奇怪,因为商品详情页是通过路由加载的,所以出现在router-outlet下面。在它的构造函数里面加个print语句是没有用的,因为这个Component的所有字段都是Observable类型的,只有订阅后才能看到。所以我在它的@input字段下了一个断点:渲染触发点是第2行的cxOutlet,它触发了第10行cx-page-layout组件的创建:创建完Component实例(即PageLayoutComponent)后,给it输入属性赋值:上图中的赋值会触发下图中第14行代码的执行。section$是一个subject,它接下来的逻辑就是遍历它的listeners,并一一通知:当执行模板文件asyncpipe时,触发Observable的执行:根据page、section、breakpoint获取section中的slots:layoutslot的关键是pagetemplate:这个pagetemplate中没有header:的section,所以我们回退到全局配置获取header的slot配置:getResponsiveSlotConfig:首先查看是否有专门为xl设置的配置layoutConfig,发现没有,只有lg:找最接近xl的,答案是lg:现在你知道了:LandingPage2Template模板的页眉区域应该显示以下槽位:Jerry的更多原创文章是这里:“王子熙”:
