首页 > 解决方案 > Rxjs CombineLatest 和 Object.assign 在@angular/material 源中的用法说明

问题描述

我一直试图了解这段代码发生了什么。

我了解 combineLatest 发出一个值,从每个 observable 发出最后一个发出的值。和 Object.assign 将所有可枚举的自身属性从一个或多个源对象复制到目标对象。

我了解这一点,但我不明白的是,它们是如何在这种情况下一起使用的(combineLatest 和 Object.assign)。

combineLatest(_route.pathFromRoot.map(route => route.params), Object.assign)

这是参考https://github.com/angular/material.angular.io/blob/master/src/app/pages/component-category-list/component-category-list.ts#L28

标签: javascriptangularrxjs

解决方案


Object.assign 用作投影函数,请参见此示例

_route.pathFromRoot.map(route => route.params)将返回一个 Observable 数组。

combineLatest将获取 Array 的每个 Observable 的最新值,然后将它们传递给投影函数,从而生成一个具有所有参数作为属性的对象。


推荐阅读