我已經寫了CanDeactivate後衛我的角度應用的未來路線在CanDeactivate衛隊這是非常基本的:角2路由器3.0
@Injectable()
export class CanDeactivateGuard implements CanDeactivate<CanComponentDeactivate> {
canDeactivate(component: CanComponentDeactivate): Promise<boolean> | boolean {
return component.canDeactivate ? component.canDeactivate() : true;
}
}
它只是等待一個承諾來解決,以真/假,或立即真/ false將被傳回。但是,我想要做的事情是在放置警衛的組件中檢查未來路線。舉例來說,假設我有三條路線,/list
,/shop
, /checkout
,我把canDeactivate
後衛放在/shop
上。我想要那裏,因爲如果他們離開那個組件,我想問他們是否確定他們想離開。但如果他們要離開去結賬,我不想問他們是否確定。我只會立即回覆canDeactivate
後衛。但是,如果他們回到/list
,我可能會問他們是否確定他們想將商品放在購物車中。
我擡頭看了幾個問題,包括this one,並通讀了Angular site上的文檔,但還沒有找到我在找什麼。
我的想法是,在實際的組件中,在canDeactivate
方法中,我將能夠檢查路由器或未來路由或沿着這些行的東西,看看它是什麼,看看我是否要立即返回true來自後衛。
對此的任何想法?
您可以添加某些使用router.navigate進行導航的點擊處理程序,並保存可在'canDeactivate'方法中使用的URL,以根據您的需要返回true \ false。 –