Угловая v2 + машинописная глубокая копия / клон с геттерами - PullRequest
1 голос
/ 18 марта 2019

Как я могу скопировать / клонировать класс машинописи? Родительский класс содержит вложенный класс, а также коллекцию вложенного класса. Каждый тип класса содержит геттер. Я хотел бы, чтобы скопированный класс не потерял получатели, а вложенный класс и элементы массива получили новую ссылку.

Мои проблемы в том, что JSON.parse(JSON.stringify( obj )); не скопировал геттеры. и Object.assign(target, soure); скопировал получатели, но элементы массива сохраняют исходные ссылки.

Вот структура классов

export interface IClassA {
  code: number;
  description: string;
}

export class ClassA implements IClassA {
  code: number;
  description: string;
  get descrAndCode() {
    return 'Getter A ' + this.description + ':' + this.code;
  }
}

export interface IClassB {
  name: string;
  code: number;
  classList: Array<ClassA>;
}

export class ClassB implements IClassB {
  name: string;
  code: number;
  get codeAndName(): string {
    return 'Getter B' + this.code + ':' + this.name;
  }
  nested: ClassA;
  classList: Array<ClassA>;  
}

1 Ответ

1 голос
/ 18 марта 2019

Еще один способ глубокого копирования объекта с помощью getter & setter с использованием следующего lodash clonedeep() метод

import * as cloneDeep from 'lodash/cloneDeep';
...
let foo = cloneDeep(bar);

Надеюсь, это поможет!

...