Я бы использовал RouteGuard
для предварительной загрузки данных для компонента с функцией canActivate
. Он будет блокировать маршрут для продолжения до тех пор, пока не будут загружены необходимые данные, затем разрешит ему продолжить и отобразить представление.
В вашей конфигурации маршрутизации вы бы сделали что-то вроде
export const ROUTES: Routes = [
//...
{
path: 'example',
component: ExampleComponent,
canActivate: [PreloadDataGuard] //<--
}
//...
];
Охрана будет обрабатывать загрузку данных и должна вернуть Observable<boolean>
или Promise<boolean>
, когда закончите.
Это даже проще, если вы используете шаблон хранилища для ваших данных, например, NGRX или NGXS или Redux. В этом случае взгляните на эту статью , хотя я думаю, что она может помочь вам в дальнейшем, даже если вы не пользуетесь магазином.