[英]await dataService between components Angular, Behavior Subject
我在 Angular 中有一个 Behavior Subject 数据服务,它在 admin-layout-component 加载(父组件)时向服务器发出请求以获取用户详细信息,然后在用户组件中注入数据,这是我的用户组件 onInit:
ngOnInit(){ this._dataService.currentUserDetails.subscribe(userDetails => this.userDetails = userDetails); console.log(this.userDetails); if(this.userDetails === ''){ this.getUser(); } }
当我在用户组件中刷新浏览器时,首先加载当前组件 ngOnInit,我必须有条件检查 userDetails 并向服务器发出新请求,但 admin-layout-component 也在发出请求,我的问题:有一种等待 dataService 的方法,所以我不必使 getUser() 两次? 提前致谢。
您可以使用 Subject 来存储有关用户的信息,如果需要,您始终可以通过this.userDetails
在组件中的任何位置从主题中获取数据:
export class Component implements OnInit {
userDetails$ = new BehaviorSubject<any>(null);
ngOnInit(){
this._dataService.currentUserDetails.subscribe(userDetails => {
this.userDetails.next(userDetails)
});
}
get userDetails(): any {
return this.userDetails$.getValue();
}
}
在模板中,您可以订阅您的服务主题
<div> {{ userDetails$ | async }} </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.