如何更新我的订阅数据?

时间:2017-06-09 19:20:32

标签: angular observable angular-observable

我有一个服务,可以对rest api进行一些http调用。在我的组件上,我订阅了它。如何在不必重新调用服务的情况下更新订阅数据?

1 个答案:

答案 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,这样你就可以看到你想要的对象了。

相关问题