我有一个会话详细信息终结点,我想在我的应用程序启动时点击它,在获取所有此类细节之后,我想使用行为主题发出一些值,其余的应用程序组件可以在需要时进行检索。
我创建了一个会话详细信息服务,如下所示:
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。
我觉得我在这里误解了一些基本知识。
任何人都可以协助并解释我要去哪里吗?
谢谢。