我正在使用网格来插入行(我正在使用的网格是DevExtreme框架的一个组件)。无论如何,与其他网格类似,它在插入记录时引发onRowInserting(e) {
let mynewrow: ItemDto = e.data; // e.data contains the inserted row
}
事件,将插入的行作为参数提供。在这种情况下,我需要将“匿名”对象(插入的数据)转换为我的客户端DTO。
ItemDto
为了更好地了解我需要达到的目标,请阅读以下文章:
Add rows to DevExtreme grid (angular) - model/schema
export class ItemDto implements IItemDto {
description: string;
note: string;
quantita: number;
postId: number;
id: number;
constructor(data?: IItemDto) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
(<any>this)[property] = (<any>data)[property];
}
}
}
init(data?: any) {
if (data) {
this.description = data["description"];
this.note = data["note"];
this.quantita = data["quantita"];
this.postId = data["postId"];
this.id = data["id"];
}
}
static fromJS(data: any): ItemDto {
let result = new ItemDto();
result.init(data);
return result;
}
toJSON(data?: any) {
data = typeof data === 'object' ? data : {};
data["description"] = this.description;
data["note"] = this.note;
data["quantita"] = this.quantita;
data["postId"] = this.postId;
data["id"] = this.id;
return data;
}
clone() {
const json = this.toJSON();
let result = new ItemDto();
result.init(json);
return result;
}
}
export interface IItemDto {
description: string;
note: string;
quantita: number;
postId: number;
id: number;
}
:
e.data
以下是Object {
__KEY__: "7c2ab8-1ff6-6b53-b9d7-ba25c27"
description: "mydescription"
id: 32
note: "mynote"
postId: 4
quantita: 2
> __proto__: Object { constructor; , _defineG....
}
的内容(此时,我只在网格中添加了一些列,因此并非所有字段都存在)。
let mynewrow: ItemDto
此图片更好地代表了对象:https://imgur.com/ihVZrDh
我不确定我在generated
行中做了什么。
我不知道它是否正确,或者是否足以在以后使用该变量,将其传递给保存新行的服务。
答案 0 :(得分:1)
您可以使用装饰器和序列化器。请参阅lib for ts:https://www.npmjs.com/package/serialize-ts
答案 1 :(得分:0)
如何使用object.assign()
将属性值从JSON响应对象推送到所需的类中?
class thingy {
a = null;
print = function() {
console.log(this.a);
};
}
const sourceJson = {
a: "hello world"
};
const target = Object.assign(new thingy(), sourceJson);
target.print()