SAP Spartacus PageLayoutService.ts 里的 templateName$ get 操做:返回一个 Observable 对象,包裹的类型为 string.spa
pipe 的第一个操做 filter,目的是确保 page 对象的 template 属性必定存在,避免接下来第二个 map 操做出现返回被 Observable 包裹的 undefined 值的状况。对象
而在 PageLayoutComponent 实现里,有一个同名属性。ip
从 layoutName$ 返回的逻辑看,优先从 section$ 里取数。若是 section$ 里有值,返回 section 的值,不然直接返回 PageLayoutService 的 templateName$.rem
能够查看到这个 project 的具体实现位置:get
从 page 结构里拿到 template 属性:值为 ProductDetailsPageTemplatestring
具体原理,是从 ngrx central store 里,拿到 product 明细页面相关数据:it
拿到 result 后,调用 next,通知对应的 subscriber:pip
更多Jerry的原创文章,尽在:"汪子熙":io