关于AngularJS:在Angular 2中创建深度复制

Create deep copy in angular 2

本问题已经有最佳答案,请猛点这里访问。

如何在Angular2中创建深度复制,我尝试使用let newObject = Object.assign({}, myObject),但myObject仍然反映了newobject中所做的所有更改。


只需使用以下功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * Returns a deep copy of the object
 */

public deepCopy(oldObj: any) {
    var newObj = oldObj;
    if (oldObj && typeof oldObj ==="object") {
        newObj = Object.prototype.toString.call(oldObj) ==="[object Array]" ? [] : {};
        for (var i in oldObj) {
            newObj[i] = this.deepCopy(oldObj[i]);
        }
    }
    return newObj;
}

尝试使用lodash.js。因为角2没有任何深度复制方法。参考:https://lodash.com/docs clonedeep

或者可以使用这个javascript函数

1
var copy = Object.assign({}, myObject);