2017-10-19 44 views
0

我知道canActivate在解析器之前調用。我有一個基於令牌(從url動態)的場景,我需要路由到三個不同的頁面。這是一個更好的方法。試圖瞭解canActivate和Resolver之間的區別

我應該使用canActivate並根據令牌和路由從服務中獲取數據。或者我應該使用Resolver服務來獲取基於令牌和路由到組件的數據?

回答

0

解析器確實用於檢索數據。它會自動將數據添加到數據[],然後可以從路由組件訪問來獲取數據:

ngOnInit(): void { 
    this.movie = this.route.snapshot.data['movie']; 
} 

canActivate沒有做到這一點,其目的是激活路徑之前更多的邏輯執行.. 。如檢查用戶是否登錄。

+0

謝謝您的回覆。我沒有足夠的聲譽來選擇答案。 –

+0

有時會有一段時間纔會允許選擇答案。但它應該允許你選擇一個你自己的問題的答案。 – DeborahK

1

CanActivate是執行檢查,如果路由器應該導航到該路由路由器後衛和解析器是數據提供者,即取的數據組件在路由器啓動導航之前。所以,因爲您正在嘗試獲取數據,所以應該使用Resolver而不是Guard。