2017-02-03 56 views
9

canLoad和canActivate之間有什麼不同?Angular2 canLoad vs canActivate

export interface Route { 
path?: string; 
pathMatch?: string; 
matcher?: UrlMatcher; 
component?: Type<any>; 
redirectTo?: string; 
outlet?: string; 
canActivate?: any[]; 
canActivateChild?: any[]; 
canDeactivate?: any[]; 
canLoad?: any[]; 
data?: Data; 
resolve?: ResolveData; 
children?: Routes; 
loadChildren?: LoadChildren; 

}

我應該什麼時候他們中的每一個?

回答

22

canActivate用於防止未經授權的用戶訪問某些路由。 See docs欲瞭解更多信息。

canLoad用於防止應用程序延遲加載整個模塊,如果用戶沒有被授權這樣做。

See docs以及下面的示例瞭解更多信息。

{ 
    path: 'admin', 
    loadChildren: 'app/admin/admin.module#AdminModule', 
    canLoad: [AuthGuard] 
}, 

有了這個代碼,對AdminModule的代碼纔會被加載到應用程序,如果AuthGuard返回true

如果用戶未被授權訪問此路線,並且我們只使用canActivate後衛,則即使用戶無法訪問該路線,也會加載AdminModule

+0

如果我在上面的場景中使用'canActivate',會有什麼區別? – k11k2

相關問題