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