头图

SAP Spartacus PageLayoutService.ts 里的 templateName$ get 操作:返回一个 Observable 对象,包裹的类型为 string.

pipe 的第一个操作 filter,目的是确保 page 对象的 template 属性一定存在,避免接下来第二个 map 操作出现返回被 Observable 包裹的 undefined 值的情况。

而在 PageLayoutComponent 实现里,有一个同名属性。

从 layoutName$ 返回的逻辑看,优先从 section$ 里取数。如果 section$ 里有值,返回 section 的值,否则直接返回 PageLayoutService 的 templateName$.

可以查看到这个 project 的具体实现位置:

从 page 结构里拿到 template 属性:值为 ProductDetailsPageTemplate

具体原理,是从 ngrx central store 里,拿到 product 明细页面相关数据:

拿到 result 后,调用 next,通知对应的 subscriber:

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


注销
1k 声望1.6k 粉丝

invalid