page.resolvers.ts 包含了很多接口定义,其中一个就是 PageDescriptionResolver:
![](https://img.haomeiwen.com/i2085791/054109d2da484261.png)
而 BasePageMetaResolver,实现了这些接口:
![](https://img.haomeiwen.com/i2085791/710c3b95c8ab5c2f.png)
我只关注 description 字段,维护在 Page 模型的 description 字段里:
![](https://img.haomeiwen.com/i2085791/a39bb2a794c4983b.png)
BasePageMetaResolver 里注入了 CmsService,后者得到 page$ Observable 对象:
![](https://img.haomeiwen.com/i2085791/290d00ed195c7f8d.png)
所有的 Resolver,都是从这些 Observable 对象里读取 Page 包裹对象的对应字段。
在该单元测试执行初始化操作时:
![](https://img.haomeiwen.com/i2085791/2c6476fa25a2affd.png)
依次初始化 BasePageMetaResolver 的每个字段:
![](https://img.haomeiwen.com/i2085791/3ee2951d8eb5176c.png)
执行 resolveTitle 方法:
![](https://img.haomeiwen.com/i2085791/25adb58281970afa.png)
调用 CmsService 的 getCurrentPage 方法:
![](https://img.haomeiwen.com/i2085791/cc71eb62d8dfb355.png)
最后拿到 title 字段:
![](https://img.haomeiwen.com/i2085791/7af09d72c8ba51d3.png)
更多Jerry的原创文章,尽在:"汪子熙":
![](https://img.haomeiwen.com/i2085791/97c4752c0e619c44.png)
网友评论