У меня есть компонент, который извлекает свой бизнес-объект из одного HTTP-запроса, а затем выполняет несколько последующих запросов для заполнения раскрывающихся списков. Аргументы в этих последующих запросах состоят из данных бизнес-объекта, поэтому эти запросы не могут начинаться, пока не завершится первый.
Учитывая пример резольвера PersonResolver
, я хочу достичь этого потока:
- Звоните
this.personService.getPersonData()
. Возвращает тип Observable<PersonModel>
.
- Используйте возвращенный экземпляр
PersonModel
, который мы назовем personData
, для вызова this.personService.getAdditionalData1(personData.foo)
и this.personService.getAdditionalData2(personData.bar)
. Оба возвращают тип any[]
.
- Тип возврата
Observable<PersonModel, any[], any[]>
из метода resolve
.
Я хотел бы внедрить это в распознаватель компонента, но мне тяжело сосредоточиться на правильном использовании RxJS, которое мне нужно для работы.
Вот что у меня так далеко. Я застрял довольно быстро.
constructor(private personService: PersonService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<PersonModel, any[], any[]> | Observable<Observable<PersonModel, any[], any[]>> | Promise<Observable<PersonModel, any[], any[]>> {
this.personService.getPersonData().subscribe(personData => {
// what to put in here?
});
}