Use a functional `CanActivateFn` guard. Class-based guards are deprecated. ```ts // auth.guard.ts import { inject } from '@angular/core'; import { CanActivateFn, Router } from '@angular/router'; import { AuthService } from './auth.service'; export const authGuard: CanActivateFn = (_route, state) => { const auth = inject(AuthService); const router = inject(Router); return auth.isLoggedIn() ? true : router.createUrlTree(['/login'], { queryParams: { returnUrl: state.url }, }); }; ``` Apply it to...
Scanned 9/5/2026
Install to Claude Code
npx -y skills add HoangNguyen0403/agent-skills-standard --skill angular-routing --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Angular Routing?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-angular-routing-129c8764)More formats (shields.io, HTML) on the badges page.
Use a functional `CanActivateFn` guard. Class-based guards are deprecated.
```ts
// auth.guard.ts
import { inject } from '@angular/core';
import { CanActivateFn, Router } from '@angular/router';
import { AuthService } from './auth.service';
export const authGuard: CanActivateFn = (_route, state) => {
const auth = inject(AuthService);
const router = inject(Router);
return auth.isLoggedIn()
? true
: router.createUrlTree(['/login'], {
queryParams: { returnUrl: state.url },
});
};
```
Apply it to a lazy-loaded feature route:
```ts
// app.routes.ts
import { Routes } from '@angular/router';
import { authGuard } from './auth.guard';
export const routes: Routes = [
{
path: 'dashboard',
canActivate: [authGuard],
loadComponent: () =>
import('./dashboard/dashboard.component')
.then(m => m.DashboardComponent),
title: 'Dashboard',
},
];
```
Configure the router:
```ts
import { ApplicationConfig } from '@angular/core';
import {
provideRouter,
withComponentInputBinding,
} from '@angular/router';
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(routes, withComponentInputBinding()),
],
};
```
Keep access-control logic out of the route config—route config should contain route metadata and guard references, while the guard handles authorization. Use a `ResolveFn<T>` when critical data must be fetched before navigation.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!