簡體   English   中英

強制角度6組件重新加載

[英]Force an angular 6 component to reload

有什么方法可以迫使角組件重新加載嗎? 我的意思是,我希望我的實際組件中的所有組件消失,並使用其構造函數ngOnInit()和所有組件從零重新加載。

之所以要這樣做,是因為我有一個應用程序可以使用Promise提取大量數據。 提取的數據取決於應用內用戶控制的某些參數。

這些參數更改后,應用程序將再次獲取數據。 問題是:如果在更改參數時最后的承諾尚未結束,則將開始獲取新數據,但是舊的承諾仍在等待完成。 另外,完成操作后,它們會顯示錯誤的信息幾秒鍾。 此外,如果新的承諾比舊的承諾早完成,則該應用會顯示正確的信息幾秒鍾,直到舊的承諾結束,然后顯示錯誤的信息,直到再次更改參數。

重新加載組件不是解決該問題的適當方法。 只需學習如何使用可觀察變量,它具有處理此類問題的所有內容(或破解某些承諾,但是您最好使用可觀察變量,因為它們是專門為簡化此類操作而設計的)。 例如:

userInput.valueChanges.pipe(
  switchMap(input => this.someService.getData(input))
).subscribe(data => this.displayData(data));

說明:每次用戶輸入更改時,您都會調用服務以獲取數據,然后將其顯示。 如果用戶輸入發生更改,但您仍然沒有數據,則自動取消對先前可觀察數據的訂閱,並創建對新可觀察數據的新訂閱。

您可以通過路由來做到這一點。 在componenet的ngOnInit()內部,您可以重定向到要重新加載的組件。

暫無
暫無

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

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