簡體   English   中英

組件間等待數據服務 Angular,行為主體

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM