CanLoad
Interface that a class can implement to be a guard deciding if a children can be loaded.
interface CanLoad {
canLoad(route: Route): Observable<boolean> | Promise<boolean> | boolean
}
Description
- class UserToken {}
- class Permissions {
- canLoadChildren(user: UserToken, id: string): boolean {
- return true;
- }
- }
-
- @Injectable()
- class CanLoadTeamSection implements CanLoad {
- constructor(private permissions: Permissions, private currentUser: UserToken) {}
-
- canLoad(route: Route): Observable<boolean>|Promise<boolean>|boolean {
- return this.permissions.canLoadChildren(this.currentUser, route);
- }
- }
-
- @NgModule({
- imports: [
- RouterModule.forRoot([
- {
- path: 'team/:id',
- component: TeamCmp,
- loadChildren: 'team.js',
- canLoad: [CanLoadTeamSection]
- }
- ])
- ],
- providers: [CanLoadTeamSection, UserToken, Permissions]
- })
- class AppModule {}
You can alternatively provide a function with the canLoad
signature:
- @NgModule({
- imports: [
- RouterModule.forRoot([
- {
- path: 'team/:id',
- component: TeamCmp,
- loadChildren: 'team.js',
- canLoad: ['canLoadTeamSection']
- }
- ])
- ],
- providers: [
- {
- provide: 'canLoadTeamSection',
- useValue: (route: Route) => true
- }
- ]
- })
- class AppModule {}
Methods
Parameters
Returns
|