2017-02-10 40 views
1

在Angular 2中,有沒有更好的方式來控制瀏覽器回來。 例如:點擊返回時,顯示確認對話框,如果確認重定向到第X頁,則保持在同一頁面。控制瀏覽器回到Angular 2

使用location.onPopState()我們不能完全控制瀏覽器,因爲它最終會做後面的重定向。

以上行爲可以通過authguard,canActivate的angular2路由實現嗎?

回答

1

你正在尋找的是canDeactivate後衛。維克多在他的書中這樣描述它:

canDeactivate守衛與其餘的不同。其主要目的不是檢查權限,而是要求確認。爲了說明這一點,讓我們更改應用程序,要求在用戶使用未保存的更改關閉撰寫對話框時確認 。

然後,他繼續分享如何做一個SaveChanges後衛:

canDeactivate(component: ComposeCmp, route: ActivatedRouteSnapshot, 
    state: RouterStateSnapshot): Promise<boolean> { 
     if (component.unsavedChanges) { 
     return this.dialogs.unsavedChangesConfirmationDialog(); 
     } else { 
     return Promise.resolve(true); 
     } 
    } 

我強烈建議購買這本書。 https://leanpub.com/router