Anna University Plus
Angular Guards: Protecting Routes and Navigation - Printable Version

+- Anna University Plus (https://annauniversityplus.com)
+-- Forum: Front-End JavaScript (https://annauniversityplus.com/Forum-front-end-javascript)
+--- Forum: Angular (https://annauniversityplus.com/Forum-angular)
+--- Thread: Angular Guards: Protecting Routes and Navigation (/angular-guards-protecting-routes-and-navigation)



Angular Guards: Protecting Routes and Navigation - Admin - 03-22-2026

Angular route guards control access to routes based on conditions like authentication status, user roles, or unsaved changes, ensuring secure and controlled navigation.

Types of route guards:
- CanActivate: Controls if a route can be activated
- CanActivateChild: Controls access to child routes
- CanDeactivate: Prevents leaving a route with unsaved changes
- CanLoad: Prevents lazy-loaded modules from loading
- CanMatch: Determines if a route can be matched
- Resolve: Pre-fetches data before route activation

Functional guards in modern Angular:
- Simple function-based guards instead of class-based
- Use inject() to access services within guard functions
- Cleaner and more composable approach
- Can return boolean, UrlTree, or Observable/Promise

Authentication guard pattern:
- Check if user is logged in via AuthService
- Redirect to login page if not authenticated
- Store the attempted URL for post-login redirect
- Return UrlTree for automatic navigation

Role-based authorization:
- Check user roles against route data requirements
- Use route data to specify required roles
- Redirect unauthorized users to access denied page
- Combine with CanActivateChild for nested protection

Unsaved changes guard:
- Implement CanDeactivate on components with forms
- Prompt user before navigating away from dirty forms
- Use window.confirm or custom modal dialogs
- Check form dirty state programmatically

Guard composition:
- Chain multiple guards on a single route
- Guards execute in order and all must pass
- Use helper functions to compose guard logic
- Share common guard patterns across the application


RE: Angular Guards: Protecting Routes and Navigation - indian - 03-22-2026

Route guards are essential for securing Angular applications. With newer Angular versions, functional guards using inject() are much cleaner than the old class-based approach. One important tip: always handle the redirect logic inside the guard itself rather than just returning false, so users get a proper login page or error message instead of a blank screen.