簡體   English   中英

Angular 5延遲加載的應用程序和瀏覽器導航按鈕

[英]Angular 5 lazy loaded app and browser navigation buttons

我有一個很大的應用程序,主要是由許多延遲加載的模塊組成的。 我的問題是瀏覽器按鈕,無論用戶單擊backforward還是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.

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