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