Привет,
У меня есть приложение, в котором у нас есть несколько пользователей, и я хочу видеть сведения о пользователе, поэтому мне нужно разрешить этого пользователя по идентификатору перед вводом маршрута. Все хорошо, когда я это делаю, если я сначала попадаю в компонент пользователей, который извлекает всех пользователей. Но в случае перезагрузки маршрут пытается разрешить пользователя по идентификатору и терпит неудачу, потому что пользователей уже нет (они еще не были получены). Я хотел бы проверить, существуют ли пользователи, получить их, а затем разрешить маршрут с пользователем. Вот код:
resolve(route: ActivatedRouteSnapshot): Observable<any>|Promise<any>|any {
let id = route.params['id'];
if (!this.usersService.checkIfUsersExist()) {
return this.usersService.getUsers().subscribe(
(success) => {
return this.usersService.getUserById(id);
},
(error) => {
this.router.navigate([ 'login ']);
}
);
} else {
return this.usersService.getUserById(id);
}
}
А затем в компоненте
this.route.data.subscribe(
(res) => {
this.user= res['user'];
}
);
Все, что я получаю, когда слушаю данные маршрута, это объект с пользователем: подписчик. Когда я возвращаю только функцию this.usersService.getUserById, пользовательский объект приходит нормально.