Angular 4. Как получить модель юзера и обработать до начала загрузки дочерних компонентов?

207
16 августа 2017, 20:36

Как получить модель юзера и обработать до начала загрузки дочерних компонентов?

Дочерние компоненты подгружаются через lazy loading. Я подумал что можно это реализовать через resolve который подтягивает данные с сервера и сохраняет в синглтон сервисе UserService. Что бы resolve вызывался только один раз я реализовал роутер следующим образом:

const routes: Routes = [
    {
        path: '',
        component: AppComponent,
        resolve: {
            user: UserResolver
        },
        children: [
            {path: '', loadChildren: './client/client.module#ClientModule'},
            {path: 'admin', loadChildren: './admin/admin.module#AdminModule', canActivate: [STSPAdminGuard]},
            {path: 'account', loadChildren: './auth/auth.module#AuthModule'}
        ]
    },
    {path: '**', redirectTo: '404', pathMatch: 'full'},
    {path: '404', component: PageNotFoundComponent}
];

По идее пока resolve не вернет данные компонент не должен подгружаться. Соответственно в дочерних компонентах я должен получить модель юзера через

route.snapshot.data['user']

или через сервис в котором я ее сохранил. Но значения snapshot или сервиса при загрузке для дочерних компонентов undefined.

Такое поведение наводит на мысль что дочерние компоненты загружаются асинхронно.

Как сделать так что бы дочерние компоненты загружались после того как загрузилась модель юзера?

READ ALSO
не работает popUp на ios

не работает popUp на ios

Использую либу magnific popup для простого модального окна, всё работает отлично во всех браузерах и на мобильных устройствах кроме ios, причем...

334
вернуть input type='file' в первоначальное состояние

вернуть input type='file' в первоначальное состояние

Имеется форма для загрузки файла на сервер в которой множество полей

326