簡體   English   中英

如何取消Angular 2中的路線變更?

[英]How to cancel route change in Angular 2?

當用戶在瀏覽器中單擊后退或前進按鈕時,我想取消路由更改。 到目前為止,我設法捕獲路由更改事件,如下面的代碼:

constructor(router:Router) {
  router.events
    .subscribe((event:Event) => {
      // some logic.
      // event.preventDefault(); ?
    });
}

我在事件中找不到任何方法/成員來停止事件默認。 然后我將在控制台上收到此錯誤,因為我沒有按預期注冊路由配置,這是因為我使用location.go()來修改網址。

錯誤:未捕獲(在承諾中):錯誤:無法匹配任何路由:'Some / Url'

有沒有辦法取消路由更改,以便Angular不查看路由配置?

您可以在定義路徑時使用canDeactivate guard,這將幫助您在更改路徑時編寫邏輯。

您可以簡單地返回true或false,根據您是否要繼續或拒絕路由導航,您還可以引用對該路由有效的組件實例,以便讀取其上的任何屬性。

該方法的簽名如下,

canDeactivate(component: T,
    route: ActivatedRouteSnapshot, 
    state: RouterStateSnapshot) :  
     Observable<boolean>|Promise<boolean>|boolean

您可以在這里閱讀更多相關信息

暫無
暫無

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

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