У меня есть страница с подробностями. Я подписываюсь на Observable с http получить результат назначен объекту. Страница покрыта информацией.
Позже я хочу отправить команду на сервер с http постом. Пост ожидает ответа от сервера.
Я хочу добавить данные из ответа на объект.
ОБНОВЛЕНО
Методы обслуживания для получения и публикации. Они оба работают.
/* Getting the detail of the device */
getDevice(id: string): Observable<DeviceDetail> {
const url = `${this.devicesUrl}/${id}`;
return this.http.get<DeviceDetail>(url)
.pipe(
tap(() => this.log(`Fetched device id=${id}`)),
catchError(this.handleError<DeviceDetail>(`Fetching device id=${id}`))
);
}
/* making action */
post(device: Device, action): : Observable<HttpResponse<Device>> {
const url = `${this.devicesUrl}/${device.id}`;
return this.http.post<Device>(url, action, {
headers: new HttpHeaders({
'Content-Type': 'application/json'
}), observe: 'response'
})
.pipe(
tap(() => this.log(`Command post successfully`)),
catchError(this.handleError<HttpResponse<Device>>('Post command'))
);
}
Предполагаемый результат - показать детали. (работает)
private device: DeviceDetail;
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
this.deviceService.getDevice(id).subscribe((res) => {
this.device = res;
});
}
Затем нажмите кнопку на странице. (работает)
<ion-col *ngIf="device">
<ion-button expand="block" (click)="makeAction(device)">Turn on</ion-button>
</ion-col>
После того, как он отправляет команду и получает ответ.
makeAction(device: DeviceDetail) {
this.deviceService.makeAction(device)
.subscribe((res) => {
if (device) {
this.device.values.timeStamp.push(res['body.values.timeStamp']);
// I can see the response
console.log(res);
// How to add response to the object? This is not working
this.device.values.value.push(...res.body.values.value, ...this.device.values.value);
// Neither this
//this.device.values.value = [...this.device.values.value, ...res['body.values.value']];
}
});
}
И добавляется к объекту и показывается на странице. (Не знаю как решить)
Спасибо за помощь.