我有一个服务,可以对rest api进行一些http调用。在我的组件上,我订阅了它。如何在不必重新调用服务的情况下更新订阅数据?
答案 0 :(得分:1)
问题不是很明确,但我认为我可以推断出足以希望提供答案。
假设您有一个User
对象的可观察对象,该对象上有OrganizationId
属性,并且您希望观察到与该Organization
相关联的OrganizationId
对象。您希望在用户更新时更新,对吗?
这是您希望使用flatMap
运算符的内容。假设我们的organizationService
有一个byId$
方法,该方法接收OrganizationId
并从http.post()
方法返回一个observable。
organization$ = user$
.flatMap(user => organizationService.byId$(user.OrganizationId));
您可以将flatMap
视为与map
类似,因为它会占用一个值,并根据您传递给它的回调将其转换为另一个值。不同之处在于,如果以这种方式使用正常map
,最终会得到一个可观察的可观察对象。 flatMap
会打开返回给它的observable,这样你就可以看到你想要的对象了。