簡體   English   中英

從 observable angular 7 獲取最后發出的值

[英]get last emitted value from observable angular 7

在下一次單擊時,向 observable 發出值能夠獲得,但它首先被調用 n 次,然后在獲取對象時獲得空值。 所以我需要寫一個 if 條件,如果值不為空然后執行一些邏輯。 那么有沒有辦法獲得最終完成的值,所以嘗試過像 last take(1) 和行為主題這樣的 rxjs 操作符,但它們都沒有工作附加代碼片段在編寫 observable 時有任何錯誤

savePersonalInfo$ = new Subject<any>();     
get savePersonalInfo() {
    return this.savePersonalInfo$.asObservable();
}

我的服務文件看起來像這樣,其中嘗試使用行為主題創建主題但沒有運氣。

onClickedNext(){
  // this.isContinueClicked = true;
  // this.shared.coapplicantForm = this.register;
  this.shared.isFromNext = true;
  this.shared.savePersonalInfo$.next({value: 'clicked'});

}

在下一次單擊事件中發出值,因此它來自導航組件。

this.shared.savePersonalInfo.subscribe(resp => {
 if (resp.value != "") {
 }
});

代碼試圖在這里獲取發出的值它需要獲取最新的值最初它變空這是另一個組件,下次單擊需要將數據保存在個人組件中,因此如果條件數據是否可用,則在它發送的代碼中的其他地方寫入對象在這種情況下如何區分,因為它獲取對象。

您可以使用 skipWhile 運算符來檢查發出的值是否為空。 以下代碼塊可能對您有所幫助。

this.shared.savePersonalInfo.pipe(skipWhile(value => !value)).subscribe(res => {
 console.log(res);
});

您需要使用ReplaySubject 它向每個新訂閱者發出最后一個值

暫無
暫無

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

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