关于 SAP Spartacus PageMetaService 和 MetaResolver

PageMetaService, 通过项目自定义的类型和自定义注入器,调用 getMulti 方法,获得注入的 Resolvers:

meta$ 的值是 defer 返回的一个 Observable.

defer 里是一个工厂函数。

当 meta$ 被 subscribe 时,工厂函数才会触发:

工厂函数内部:

getCurrentPage:最后还是从 ngrx store 里获取数据:

pageContext 存储在 routingService 中,后者也是从 ngrx store 里获取数据:

然后根据 pageContext 获取 page 数据:

image

下图展示了从 ngrx store 里读取的 home page 的数据:

注入的 page resolver:

因为 home page 是 content page,所以返回 ContentPageMetaResolver:

依次遍历每个 resolver,调用其 resolve 方法:

以 resolveTitle 为例:

返回的就是其 title$ Observable 对象:

title$ 对象的数据源也来自 ngrx store:

猜你喜欢

转载自blog.csdn.net/i042416/article/details/124708470
今日推荐