только обнаружил что предлагается подставлять функцию:
export const yourGuardFunction: CanActivateFn = (
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot) => {
// your logic goes here
}
{
path: '/your-path',
component: YourComponent,
canActivate: [yourGuardFunction],
}
А как теперь использовать сервисы в функции? Я например раньше именно в гуарде (при первичной загрузке) проверял наличие токенов для авторизации, и если они имелись, загружал объект юзера, проверял роли, и уже потом давал добро на показ компонента.
Через inject https://angular.io/api/core/inject
export const notLogged: CanActivateFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => { const router: Router = inject(Router) const authenticator: Authenticator = inject(Authenticator) return authenticator.passport() .pipe( switchMap(u => { if (!u.isAnon()) { return router.navigate(["/"]) } return of(true) }) ) }
Обсуждают сегодня