Был на собеседовании, вот какая примерно была моя структура приложения:
| app
-| user.component.ts
-| users-list.component.ts
-| posts.component.ts
-| data.service.ts
-| user.resolver.ts
//Проект намного больше, но для понятия моей проблемы, хватит и такой абстрактной структуры.
У меня при клике на юзера, в компоненте
users.list, переходит на роут ''/user/:id". для него установлен компонент
user, в теле его конструктора, я получаю список юзеров и их портов, примерно так:
constructor (data: data.service ... ) {
data.subscribe(... this.user = user);
data.subscribe(... this.postsOfUser = userPosts);
//Код похож на оригинал, но короче.
}
Так вот, мне на собеседовании сказали, что это плохой подход, лучше использовать resolver-ы, я погуглил, посмотрел и понял, что они нужны, как по-мне, только как прослойка между переходом и компонентом, и просто выборку данных, которую делаю в конструкторе компонента
user, я должен был делать в resolver-е, дабы упростить конструктор.
В итоге, они ничего не дают, а только уменьшаю код компонента, через переноса его в resolver?
Вот так я понял зачем они нужны, пожалуйста, укажите, если я не прав, или прав, спасибо!
Вот что делает мой
user.resolver.tsresolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<User> {
return this.rest.getUser(route.params['id']);
}
Далее идёт подгрузка компонента(
user.component.ts) при роуте:
export class UserPostsComponent {
user: User;
constructor(private router: ActivatedRoute, private rest: RestService) {
this.user = router.snapshot.data['user'];
rest.getAllPosts(router.snapshot.params['id']);
}
}
Т.е, я только получаю пользователя через resolver, и всё, а посты в компоненте юзера. Если же хочу и посты тоже в resolver-е получать, то нужно и под него отдельный файл...
Пожалуйста, помогите понять, я верно мыслю?