克隆对象TypeScript
这个问题在这里已经有了答案:
尝试使用
this.user = Object.assign({}, currentObject);
正如@AngularFrance所提到的,这只适用于浅拷贝对象,如果需要深度拷贝对象,可以寻求其他实现。
你可以使用lodash:
https://lodash.com/docs#cloneDeep
lodash被推荐用于很多对象/数组操作
你可以将你的编辑器表单绑定到一个空的User对象,比如editUser
,而不是selectedUser
变量(它指向你的用户集合的一个元素)。 在onUserSelected(event)
,您将通过克隆选定用户对象的可变属性来初始化editUser
。 提交编辑表单( (ngSubmit)="editSubmit()"
)后,您将替换用户集合中所选用户对象的原始属性。
沿着以下方向的东西:
editUser: User = new User();
selectedId: number;
selectedUser: User;
onUserSelected(event) {
this.selectedId = event.data.id;
this.selectedUser = this.users.filter(user => user.id === this.selectedId)[0];
this.editUser = this.simpleClone(this.selectedUser);
}
editSubmit(event) {
this.selectedUser = this.simpleClone(this.editUser);
}
simpleClone(obj: any) {
return Object.assign({}, obj);
}
simpleClone实现不适用于深度克隆,因此如果您的User对象持有对其他对象的引用,则应将其转换为适当的克隆函数。
链接地址: http://www.djcxy.com/p/6945.html