Как выполнить запрос на сервер до загрузки приложения

Есть Angular приложение, необходимо выполнить запрос на получение пользовательских данных до загрузки всего приложения, т.е необходимо дождаться ответа от сервера, записать данные в ngRx storage и только потом загружать приложение.

Для чего это нужно: Есть страницы админки которые должны быть ограничены и проверять авторизован ли пользователь,а эта информация должна приходить в ответе от сервера.

Или есть другие способы реализации подобного функционала?


Ответы (1 шт):

Автор решения: Igor Inozemtsev

Для этого можно использовать токен APP_INITIALIZER. Статья с примером

Если вкратце, то в корневом модуле (например, app.module.ts) необходимо добавить новый провайдер: {provide: APP_INITIALIZER, useValue: () => promise, multi: true}]}, где useValue - метод, возвращающий промис. Когда промис разрезольвится - приложение продолжит выполняться. Т.е. в useValue можно передать метод сервиса, отвечающего за инициализацию приложения, а в этом методе уже отправлять запрос, устанавливать состояние и выполнять прочие необходимые для работы приложения манипуляции. Главное по окончанию не забыть про resolve.

→ Ссылка