Да, Angular поддерживает функциональные guards, например CanActivateFn; зависимости можно получить через inject в контексте вызова guard.
Можно ли реализовать Angular guard обычной функцией, а не классом или сервисом?
Да, Angular поддерживает функциональные guards, например CanActivateFn; зависимости можно получить через inject в контексте вызова guard.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Да, Angular поддерживает функциональные guards, например CanActivateFn; зависимости можно получить через inject в контексте вызова guard.
Guard возвращает решение синхронно, через Promise или Observable. Для перенаправления лучше вернуть UrlTree или RedirectCommand, а не запускать отдельную навигацию после false. Клиентская проверка нужна для UX и не заменяет контроль доступа на backend.
Источник: angular.dev.