Route guards son funciones que controlan si la navegación hacia/desde una ruta está permitida. Se ejecutan antes de que una ruta se active (o antes de que la abandone), permitiendo comprobaciones de autenticación, control de permisos e indicaciones de "cambios sin guardar".
Los tipos de 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
