angular-guards
ALWAYS use when working with Angular Route Guards, CanActivate, CanDeactivate, CanLoad, or route protection in Angular applications.
How do I install this agent skill?
npx skills add https://github.com/oguzhan18/angular-ecosystem-skills --skill angular-guardsIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides standard documentation and code snippets for Angular Route Guards. All external references point to official Angular documentation and repositories managed by Google, which are trusted sources. No security issues were identified.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
Angular Route Guards
Version: Angular 21 (2025) Tags: Guards, Routing, Auth, CanActivate
References: Guards Guide • CanActivate
API Changes
This section documents recent version-specific API changes.
-
NEW: Functional guards — Use
CanActivateFninstead of class-based -
NEW: CanMatch guard — Prevent lazy loading of unauthorized code
-
NEW: provideRouter with guards — Modern guard registration
-
DEPRECATED: Class-based guards — Migrate to functional
Best Practices
- Create functional guard
export const authGuard: CanActivateFn = () => {
const authService = inject(AuthService);
const router = inject(Router);
if (authService.isAuthenticated()) {
return true;
}
return router.createUrlTree(['/login']);
};
- Use CanActivate for route protection
const routes: Routes = [
{
path: 'dashboard',
canActivate: [authGuard],
component: DashboardComponent
}
];
- Use CanActivateChild for child routes
export const adminGuard: CanActivateChildFn = () => {
const auth = inject(AuthService);
return auth.isAdmin() || inject(Router).createUrlTree(['/unauthorized']);
};
const routes: Routes = [
{
path: 'admin',
canActivateChild: [adminGuard],
children: [...]
}
];
- Use CanMatch for lazy loading
const routes: Routes = [
{
path: 'admin',
canMatch: [authGuard],
loadComponent: () => import('./admin/admin.component')
}
];
- Use CanDeactivate for unsaved changes
export const canDeactivateGuard: CanDeactivateFn<CanComponentDeactivate> = (component) => {
if (component.hasUnsavedChanges?.()) {
return confirm('You have unsaved changes. Are you sure?');
}
return true;
};
- Use withComponentInputBinding
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(routes, withComponentInputBinding())
]
};
- Use multiple guards
const routes: Routes = [
{
path: 'admin',
canActivate: [authGuard, adminGuard],
loadComponent: () => import('./admin/admin.component')
}
];
- Pass data to guards
const routes: Routes = [
{
path: 'user/:id',
canActivate: [userGuard],
data: { requiredRole: 'admin' }
}
];
export const userGuard: CanActivateFn = (route, state) => {
const requiredRole = route.data['requiredRole'];
// Check role
};
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/oguzhan18/angular-ecosystem-skills/angular-guards">View angular-guards on skillZs</a>