PageMetaService, 通过项目自定义的类型和自定义注入器,调用 getMulti 方法,获得注入的 Resolvers:
meta$ 的值是 defer 返回的一个 Observable.
defer 里是一个工厂函数。
当 meta$ 被 subscribe 时,工厂函数才会触发:
工厂函数内部:
getCurrentPage:最后还是从 ngrx
store 里获取数据:
pageContext 存储在 routingService 中,后者也是从 ngrx
store 里获取数据:
然后根据 pageContext 获取 page 数据:
下图展示了从 ngrx store 里读取的 home page 的数据:
注入的 page resolver:
因为 home page 是 content page,所以返回 ContentPageMetaResolver:
依次遍历每个 resolver,调用其 resolve 方法:
以 resolveTitle 为例:
返回的就是其 title$ Observable 对象:
title$ 对象的数据源也来自 ngrx store: