@iluxa1810

Как дождаться инициализации приложения?

Есть CanActive, который стоит на определенном маршруте, что бы не допустить переходов по запрещенным маршрутам в зависимости от ролей.

Так вот, этот CanActive срабатывает раньше события обращения к API запроса данных пользователя...

Пробовал выполнить инициализацию пользователя через APP_INITIALIZER:

export function appInitializerFactory(authService: AuthorizationService, permissionsService: PermissionService) {
     console.log("appInitializerFactory1");
     return async () => {
          authService.authorize().pipe(tap(() => {
               permissionsService.currentUser = authService.currentUser;
               console.log("appInitializerFactory2");
          })).toPromise();
     };
}


Да, фабрика стартует раньше CanActive, но CanActive не дожидается завершения и сообщение appInitializerFactory2 возникает позже...
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
return забыл
и async там не нужен
и форматируй нормально

export function appInitializerFactory(
  authService: AuthorizationService, 
  permissionsService: PermissionService,
) {
  return () => authService.authorize().pipe(
    tap(() => permissionsService.currentUser = authService.currentUser),
  )
    .toPromise();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы