冉冉說
2021-11-12 17:15:26
問題陳述 :-當我導航到相同的 url 時,ngonInit 或任何其他生命鉤周期都無法在 angular 中工作。 設想 :-我有一個延遲加載的通用模塊,其中的內容根據它出現的鏈接而變化。所以我有多個不同名稱的按鈕指向同一個組件,當我單擊按鈕時,我想要屏幕名稱,以便我可以根據屏幕名稱獲取通用組件上的內容并將其顯示給用戶。我面臨的問題:-如果組件打開并顯示一個 sceario 并且用戶單擊另一個按鈕,該按鈕路由到同一組件,角度生命周期掛鉤不起作用,我不能調用 api 來刷新數據?那么如何實現呢?我嘗試過的解決方案:- 1. onSamenUrlNavigation 屬性設置為 'Reload' 。forRoot() 然后我訂閱了那個通用模塊中的 router.event 并刷新了我使用過的數據,檢查它是否是 urlnavigationend 的實例。會導致問題。添加了以 screenname 為鍵的查詢參數,但生命周期方法不起作用添加了導航附加功能,但存在一些問題那么如何在 angular 中解決這個問題呢?
2 回答

小怪獸愛吃肉
TA貢獻1852條經驗 獲得超1個贊
不是一個聰明的方法,但這應該有效:
為同一組件創建單獨的路由
{ path: 'cdconfig/:data' , component: CdpiplelinegraphComponent},
{ path: 'cdconfigflow/:data' , component: CdpiplelinegraphComponent},
導航時改變路徑
if(this.router.url.indexOf('/cdconfig/')>-1){
this.router.navigate(['cdconfigflow',id.name]);
}else{
this.router.navigate(['cdconfig',id.name]);
}

米脂
TA貢獻1836條經驗 獲得超3個贊
我會使用 NavigationEnd 解決方案,但您可以在 Event 對象內部檢查用戶導航到的 URL 是否是新 API 請求的正確 URL,例如:
router.events.subscribe((event) => {
if (event instanceof NavigationEnd && event.url.match('path/to/my/component')) {
this.loadApiData();
}
}
添加回答
舉報
0/150
提交
取消