[英]Angular 5 lazy loaded app and browser navigation buttons
我有一個很大的應用程序,主要是由許多延遲加載的模塊組成的。 我的問題是瀏覽器按鈕,無論用戶單擊back
, forward
還是refresh
我的應用程序崩潰。
據我研究,我可以以某種方式捕捉到這些事件,阻止它們傳播並自己處理該事件。
還有其他好的解決方案嗎? 我應該考慮哪些方面?
根據評論進行編輯
我不認為這是一個有角度的路由器問題。 事實是,我的應用程序在運行時以編程方式更改了路由器配置。 因此,當用戶嘗試重新加載等時,他嘗試輸入尚不存在的路徑。 我可以以某種方式使用數據存儲,並在導航之前重新插入路由器配置,但我認為這並不明智。
通過崩潰,我只是表示錯誤,例如couldn't find route 'x\\a\\b'
。
我現在的當前想法是捕獲瀏覽器按鈕的事件並自己處理它們,改變它們的工作方式,但是我不確定這是否可能(類似於gmail我猜的東西)。
我也有大量的路線,並且使用routeEvent來處理路線更改
import {ActivatedRoute, Event, NavigationEnd, NavigationError, NavigationStart, Router} from '@angular/router';
...
routerEvent;
constructor(private router: Router,
private route: ActivatedRoute) {
this.routerEvent = router.events.subscribe((event: Event) => {
if (event instanceof NavigationStart) {
// Show loading indicator
}
if (event instanceof NavigationEnd) {
// Hide loading indicator
this.init();
}
if (event instanceof NavigationError) {
// Hide loading indicator
// Present error to user
}
});
}
作為本次活動名稱所暗示的,NavigationStart被觸發,當你剛加載路線,NavigationEnd的路徑引導加載完成且NavigationError時,當你的路線加載失敗觸發。
在不再需要時退訂也是一個好主意。
ngOnDestroy(): void {
this.routerEvent.unsubscribe();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.