Skillshub 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)
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/angular-routing" ~/.claude/skills/comeonoliver-skillshub-angular-routing && rm -rf "$T"
manifest:
skills/HoangNguyen0403/agent-skills-standard/angular-routing/SKILL.mdsource content
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:
. Register in routes:export const authGuard: CanActivateFn = () => inject(AuthService).isAuthenticated() ? true : inject(Router).createUrlTree(['/login'])
.{ 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
and overriding updateTitle(snapshot)) or use simple title: 'Dashboard' in route data.TitleStrategy - 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
orloadComponent
for all feature routes.loadChildren