克隆对象TypeScript

这个问题在这里已经有了答案:

  • Angular 8中的angular.copy有什么替代答案
  • 在JavaScript中深入克隆对象的最有效方法是什么? 57个答案

  • 尝试使用

    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

    上一篇: Cloning objects TypeScript

    下一篇: Javascript deep copying object