[英]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.