Búsqueda de sitios web

angular - Clonando objetos TypeScript


Estoy trabajando con Angular 2 con TypeScript. Tengo un componente de Gestión de Usuarios donde tengo una tabla con todos los usuarios.

Cuando se hace clic en cualquier usuario en la tabla, aparecen formularios con todas sus propiedades para editar. Elegir un usuario ocurre el evento como se muestra a continuación:

 onUserSelected(event) {
        var selectedId = event.data.id;
        this.selectedUser = this.users.filter(user => user.id === selectedId)[0]
    }

El problema es que cuando se está editando a selectedUser, sus propiedades también cambian en la tabla y no se ve tan bien. Intenté crear una copia yo mismo como se muestra a continuación, pero no funcionó - clase user

 clone() {
        var cloned = new User(this.id, this.login, this.name, this.surname, this.phone);
        return cloned;
    }

¿Quizás estoy haciendo algo que no es una buena práctica en Angular2?

Respuesta #1

Intenta usar

this.user = Object.assign({}, currentObject);

Como mencionó @AngularFrance, esto solo funcionará para copiar objetos de forma superficial, busque otra implementación si hay necesidad de copiar un objeto profundamente.

Respuesta #2

Puedes usar lodash :

https://lodash.com/docs#cloneDeep

Se recomienda lodash para muchas manipulaciones de objetos/arrays

Artículos relacionados