return await this.http.get<PctLayer>(`${this.url}/${guid}`, { headers: this.header })
.map(r => {
Object.assign(new PctLayer(), r);
})
.toPromise()
Может работать на вас.Просто включите Object.assign
в наблюдаемую цепочку, прежде чем сопоставить ее с обещанием
Редактировать
Поскольку я из эры RxJS 5, ниже также версия 6.x:
return await this.http.get<PctLayer>(`${this.url}/${guid}`, { headers: this.header })
.pipe(map(r => {
Object.assign(new PctLayer(), r);
}))
.toPromise()
Еще одно редактирование
В моих предварительных проектах, когда мне нужно внедрить данные из HTTP-выборки в объект, я обычно просто создаю новый объект с REST-ответом в качестве входного параметра:
export interface MyClassInterface {
A: string;
}
export class MyClass implements MyClassInterface{
public A: string;
constructor(iIn: MyClassInterface) {
this.A = iIn.A
/* and so on */
}
public myUsefulFinction() { /*Do stuff*/ }
}
Тогда, предполагая, что GET-ответ совместим с интерфейсом, вы можете просто
return await this.http.get<PctLayer>(`${this.url}/${guid}`, { headers: this.header })
.pipe(map(ifc => MyClass(ifc)))
.toPromise()