![](/img/trans.png)
[英]Angular2 pass data from CanActivate guard to Resolve resolver?
[英]Angular2 Resolve before CanActivate
我有一個身份驗證服務,它實現了Resolve接口,以返回一個從服務器檢索到用戶身份驗證狀態后解析的observable。
此相同的身份驗證服務實現CanActivate接口,以阻止用戶在未登錄的情況下訪問組件。
目前,在解析resolve函數之前觸發canActivate函數,這意味着它在從服務器檢索登錄狀態之前檢查用戶的登錄狀態。
我的問題是,如何在解析resolve之前阻止調用canActivate函數,或者是否有其他方法可以實現我想要的?
謝謝馬克斯。
CanActivate總是在設計解決之前運行..
因為解析器應該只在CanActivate警衛完成他們的工作(認證,清理......)之后運行。 當您遵循此模式(見下文)時,通常沒有理由反轉或更改此順序。
1. CanActivate (身份驗證):
Promise
或Observable
確保解析器等待CanActivate防護完成 。 2.解決 (獲取數據):
Promise
或Observable
確保在解析數據可用時加載組件 。 3. constructor / OnInit (使用數據):
ActivatedRoute.snapshot.data
)。 如果,不知何故,你真的需要等待解析器完成, 只需將代碼從防護裝置移動到解析器 。
您可以在GitHub上的這個帖子中閱讀更多相關信息。
canActivate()可以返回一個boolean
, Promise<boolean>
或Observable<boolean>
。
如果返回Promise或Observable,則在將組件解析為true
之前,無法導航組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.