В текущем приложении Angular 6 есть подписка на наблюдаемый (ответ от службы RESTful)
this.activatedRoute.data.subscribe(({bag}) => {
console.log(bag);
this.bag= bag;
});
подписка ожидает ответа от распознавателя
@Injectable({
providedIn: 'root'
})
export class BagResolver implements Resolve<Bag> {
constructor(private service: BagService) {}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const id = route.params['id'] ? route.params['id'] : null;
if (id) {
const existingBag = this.service.find(id).pipe(map((bag: HttpResponse<Bag>) => bag.body));
return existingBag;
}
return of(new Bag());
}
}
Запустил режим отладки. Я обнаружил, что bag - это объект со следующей структурой
Object
{headers:,
body{id:10, name:aName, ...}, <-- this is the actual bag object
statusCode:"OK",
statusCodeValue:"200"
}
Таким образом, bag
в подписке на самом деле не является объектом bag, а выглядит как http-ответ, который помещает объект bag в его тело
Теперь я действительно хочу извлечь объект body
сверху и привести к локальному объекту
Итак, как же безопасно извлечь данные и привести объект сверху, вернуть из подписки (...)?