繁体   English   中英

angular 可观察使用多个组件

[英]angular observable usage with multiple components

我有 user.service,我在其中调用后端 API 并获取一些用户详细信息这就是我在服务中实现可观察事物的方式

export class UserService {
  private _userDetails: Subject<any> = new Subject<any>();

我声明供外部使用

  public userDetailsObs = this._userDetails.asObservable();

然后我有后端 API function 我将响应存储到

 this._userDetails.next(res);

现在,当我登录时,我将其称为 function,并且假设从这一刻起,用户详细信息将可以在任何地方访问。 之后按主页,无法获取用户详细信息。

this.UserService.userDetailsObs.subscribe((res) =>this.userDetails=res); 

但是,如果我从这里调用 API,那么一切正常。

this.UserService.apicall();
    this.UserService.userDetailsObs.subscribe((res) =>this.userDetails=res); 

问题是我不想从每个组件调用后端 API 。 我想调用它一次然后使用那个 observable。 这可以解决吗?

使用ReplaySubject而不是Subject应该可以解决问题(使用普通的Subject ,在最后一次发射后订阅的订阅者不会被喂食)。

_userDetails: ReplaySubject<any> = new ReplaySubject(1);

(或者您可以使用一些 state 管理库,如 NGRX、NGXS,但这是一个严重的变化)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM