簡體   English   中英

Angular Guard - 如何讓 canActivate 等待一個值?

[英]Angular Guard - how to make canActivate wait for a value?

我有一個依賴客戶的警衛。 守衛沒有按預期工作,因為客戶端在守衛被擊中時還沒有准備好。 我如何讓警衛等到客戶准備好?

public canActivate() {
   if (this.ffService.getFlag(FLAG)) {
      // KEEPS HITTING HERE BECAUSE CLIENT IS NOT READY
      return observableOf(true);
   }

   // NEEDS TO MAKE IT TO THE LOGIC BELOW HERE
}

在功能標志服務中:

getFlag(flag) {
   if (!this.ffClient.isReady()) {
       // KEEPS HITTING HERE
       return false;
   }
   return this.ffClient.find(flag);
}

我已經嘗試添加重試邏輯以繼續檢查 isReady() 是否已就緒,但這只是讓守衛不加載任何東西。

嘗試這個:

public canActivate(): Observable<boolean> {
   return this.ffservice.getFlag(FLAG).pipe(
     filter(flag => flag), // will only pass if flag exists and(or if it's an obj) it's true
     mapTo(true)
   );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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