I route guard sono funzioni che controllano se la navigazione verso/da una route è consentita. Vengono eseguiti prima che una route si attivi (o prima che la lasciate), abilitando controlli di autenticazione, controllo delle autorizzazioni e prompt "modifiche non salvate".
I tipi di guard
CanActivate → can the user enter this route? (auth/permission check)
CanActivateChild → same, for child routes
CanDeactivate → can the user LEAVE? ("you have unsaved changes")
CanMatch → should this route even be matched? (feature flags, role-based)
resolve → pre-fetch data BEFORE the route activates
