【发布时间】:2017-11-11 21:57:18
【问题描述】:
我有一个服务,可以对休息 api 进行一些 http 调用。在我的组件上,我订阅了它。如何在不重新调用服务的情况下更新订阅中的数据?
【问题讨论】:
-
你想更新什么值?通常在订阅中,您会将订阅数据分配给本地组件变量。您可以直接更新您的本地值。发布一些代码?。
标签: angular observable angular-observable
我有一个服务,可以对休息 api 进行一些 http 调用。在我的组件上,我订阅了它。如何在不重新调用服务的情况下更新订阅中的数据?
【问题讨论】:
标签: angular observable angular-observable
这个问题不是很清楚,但我想我可以推断出足够的答案。
假设您有一个 User 对象的可观察对象,该对象具有 OrganizationId 属性,并且您想要与该 OrganizationId 关联的 Organization 对象的可观察对象。您希望它在用户更新时更新,对吗?
这就是您想要使用flatMap 运算符的目的。假设我们的 organizationService 有一个 byId$ 方法,它接受 OrganizationId 并从 http.post() 方法返回一个 observable。
organization$ = user$
.flatMap(user => organizationService.byId$(user.OrganizationId));
您可以将flatMap 视为类似于map,因为它将采用一个值,并根据您传递给它的回调将其转换为另一个值。不同之处在于,如果您以这种方式使用普通的map,您最终会得到一个可观察的可观察的。 flatMap 将打开返回给它的 observable,这样你就只有一个你想要的对象的 observable。
【讨论】: