Angular routing
Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/angular-routing
Standards for Angular Router, Lazy Loading, and Guards. Use when configuring Angular routes, lazy-loaded modules, route guards, or resolvers. (triggers: *.routes.ts, angular router, loadComponent, canActivate, resolver)From its SKILL.md
npx -y skills add ComeOnOliver/skillshub --skill angular-routingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
1.9 KB, 389 tokens by cl100k_base, as published. Nobody here has run it
Routing
Priority: P0 (CRITICAL)
Principles
- Lazy Loading: All feature routes MUST be Lazy load all features with loadComponent (standalone) or loadChildren (route file).
- Example:
{ path: 'dashboard', loadComponent: () => import('./features/dashboard/dashboard.component').then(m => m.DashboardComponent) }.
- Example:
- Functional Guards: Use function-based guards (CanActivateFn) instead of class-based guards (guards are deprecated).
- Example:
export const authGuard: CanActivateFn = () => inject(AuthService).isAuthenticated() ? true : inject(Router).createUrlTree(['/login']). Register in routes:{ canActivate: [authGuard] }.
- Example:
- Component Inputs: Enable withComponentInputBinding() in provideRouter(routes, withComponentInputBinding()) to define input.required<string>() in components. Angular auto-maps route params, query params, and resolve data to matching inputs.
Guidelines
- Title Strategy: Provide a custom TitleStrategy service (extending
TitleStrategyand overriding updateTitle(snapshot)) or use simple title: 'Dashboard' in route data. - Resolvers: Create a ResolveFn<User> (e.g., inject(UserService).getUser(route.paramMap.get('id'))) to pre-fetch critical data before navigation completes (resolve: { user: userResolver }). Avoid blocking UI too long.
Anti-Patterns
- No logic in route config: no logic inside route config. Move guards for access control and data fetching to dedicated Guards and Resolvers.
- No eager feature imports: Use
loadComponentorloadChildrenfor all feature routes.
References
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.