2017-02-03 12 views
9

Điểm khác nhau giữa canLoad và canActivate là gì?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; 

}

Khi nào tôi nên mỗi một trong số họ?

Trả lời

22

canActivate được sử dụng để ngăn người dùng trái phép truy cập một số tuyến đường nhất định. See docs để biết thêm thông tin.

canLoad được sử dụng để ngăn ứng dụng tải toàn bộ mô-đun một cách lười biếng nếu người dùng không được phép làm như vậy.

See docs và ví dụ bên dưới để biết thêm thông tin.

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

Với mã này, mã cho AdminModule sẽ chỉ được tải vào ứng dụng nếu AuthGuard trả về true.

Nếu người dùng không được phép truy cập tuyến đường này và chúng tôi chỉ sử dụng bảo vệ canActivate, AdminModule sẽ được tải, mặc dù người dùng sẽ không thể truy cập tuyến đường đó.

+0

Nếu tôi sử dụng 'canActivate' trong trường hợp trên, điểm khác biệt là gì? – k11k2

Các vấn đề liên quan