订阅行为主体不会返回新值

时间:2018-09-20 15:43:26

标签: angular angular6

我有一个会话详细信息终结点,我想在我的应用程序启动时点击它,在获取所有此类细节之后,我想使用行为主题发出一些值,其余的应用程序组件可以在需要时进行检索。

我创建了一个会话详细信息服务,如下所示:

export class SessionDetailsService {

  public currentUser: BehaviorSubject<IUser> = new BehaviorSubject<IUser>(undefined);

  constructor(
    private http: HttpClient) {
  }

  public getSession = () => {
    return this.http.get<ISessionDetails>('http://localhost:8080/services/sessiondetails').subscribe((sessionDetails) => {
        this.currentUser.next(sessionDetails.user ? sessionDetails.user : undefined);
      });
  }
}

在我的根应用程序组件ngOnit中,正在上述服务中调用getSession方法。

这确实触发了HTTP请求,但是我发现,当某个特定组件正在订阅currentUser行为主题时,尽管我通过调试可以看到有一个我的HTTP get订阅回调中的sessionDetails响应参数上存在用户属性,因此,我希望对this.currentUser.next(sessionDetails.user)进行调用,以便对此值感兴趣的组件将获得完整的用户值。

在我对此用户价值感兴趣的其他组件中,我正在订阅ngOnit,如下所示:

this.sessionDetailsService.currentUser.subscribe((currentUser) => {
      this.userPresent = currentUser !== undefined;
    });

正如您所知,它只是设置一个标志,但是由于传递的值仍然不确定,因此始终设置为false。

我觉得我在这里误解了一些基本知识。

任何人都可以协助并解释我要去哪里吗?

谢谢。

0 个答案:

没有答案