![](/img/trans.png)
[英]Angular - How do I cancel a Route Change triggered from the Back button?
[英]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.