【发布时间】:2021-04-19 09:28:30
【问题描述】:
我们尝试使用 BehaviorSubject 在多个组件之间共享 API 数据。在我的组件上,我正在触发 HTTP 请求并在返回响应后更新主题。
组件.ts
onClick() {
this.service.getCompanies();
this.service.companiesList$.subscribe(companies => {
console.log(companies.length); // 0 and then 1
});
}
service.ts
companiesList$ = new BehaviorSubject([]);
getCompanies() {
return this.http.get(myUrl).subscribe((res: any) => {
this.companiesList$.next(res.data);
});
}
请求完成后,如何仅访问 BehaviourSubject 中最后发出的值?
【问题讨论】:
-
正如一些回复所暗示的,您不需要将 HTTP 调用提供的 Observable 包装在另一个 Observable(
BehaviorSubject)中。你已经有了一个可以使用的 Observable。考虑尝试对 Observables 使用声明性方法。这将使通知更容易。有关更多信息,请参阅:youtube.com/watch?v=Z76QlSpYcck
标签: angular rxjs observable behaviorsubject