У меня такая ситуация, что один
Observable<User>
находится внутри другого
Observable<Params[]>
, из-за чего мне приходится использовать вложенные друг в друга Observable.subscribe.
Мне нужно получить в качестве обьекта одного конкретного юзера из базы, у которого айди соответсвует параметру роута.
Подскажите, пожалуйста, как можно избежать сложившейся ситуации и получить информация из Firebase без подписки? Потому что по сути, мне не надо подписываться на этого юзера. Мне просто нужно получить данные о нем для отображения на форме. Такое вообще возможно?
Если нет, то как тогда можно избежать вложенных подписок, потому что где-то сталкивалась с мнением, что вложенные subscribes это не очень хорошо...
Работаю с AngularFire 5
export class UserAddEditComponent implements OnInit {
userForm: FormGroup;
userId: string;
constructor(private route: ActivatedRoute, private usersService: UsersService) { }
ngOnInit() {
this.route.params.subscribe((params: Params) => {
if (params['id']) {
this.userId = params['id'];
this.usersService.getUser(this.userId).subscribe((user) => {
this.initForm(user);
});
} else {
this.initForm();
}
});
}
Метод
getUser()
сервиса
UsersService
возвращает
Observable<User>
getUser (id: string): Observable<User> {
return this.firebase.doc<User>(`users/${id}`).valueChanges();
}