Я загружаю сотрудника в свой распознаватель. Этот сотрудник возвращает список идентификаторов города.
Я хочу загрузить все города из списка идентификаторов этого города в одном распознавателе. Но я не хочу возвращать список городов, я хочу вернуть работника.
Загруженный город будет добавлен в службу кэширования для последующего использования.
Вот мой код
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
return this.employeeService.getEmployee(route.params['id'])
.pipe(
map(employee => {
const townsObservables = [];
employee['town_list'].forEach((townId) => {
townsObservables.push(this.townService.getTown(townId));
});
return forkJoin(townsObservables).pipe(
map(town => {
this.townCache.addTown(town);
return employee;
})
);
})
);
}
Проблема : forkJoin никогда не выполняется и данные снимка маршрута в моем компоненте возвращают Observalbe вместо сотрудника.
route.snapshot.data['employee'] // returns Observable {_isScalar: false, source: Observable, operator: MapOperator}
employeeService работает хорошо без всего кода в конвейере, этот код работает как ожидалось (я могу получить моего сотрудника в моих снимках данных):
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
return this.employeeService.getEmployee(route.params['id']);
}
Вопрос : как правильно загрузить связанные данные, не возвращая их в распознаватель? Я собирался попытаться использовать два отдельных резольвера, но они не могут быть объединены в цепочку (нет способа указать резолверу B использовать данные из резолвера A).
Я использую Angular 6 с RXJS ^ 6.2.1.