• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

141
Vistas
Reutilizar elementos dom por angular

Mi aplicación permite actualizar la lista de propiedades para muchos objetos. Algunos de los tipos de propiedades son opcionales, y algunos tienen más de miles de opciones.

Para lograr un buen rendimiento, envolví MatSelect para que cargue más opciones en el desplazamiento.

En la primera carga, no estoy cargando ninguna opción de la lista, sino solo una opción con el valor actual de la propiedad. Con el fin de mostrar al usuario el valor de la propiedad.

Para usar mi MatSelect en un formulario, he usado viewProviders de la siguiente manera:

 viewProviders: [ { provide: ControlContainer, useFactory: (container: ControlContainer) => container, deps: [[new SkipSelf(), ControlContainer]] } ]

Entonces, mi objetivo es que, siempre que el usuario no abra ninguna lista, no cargará ninguna opción.

Cuando el usuario presiona sobre un objeto de la lista, se genera un nuevo formGroup , las propiedades se muestran según sus tipos. uno de los tipos son Options que usan mi componente personalizado. Mi MatSelect se carga por primera vez y agrega el primer valor, que es el valor de la propiedad. En el segundo objeto, se crea un nuevo formGroup , se muestran las propiedades (si es el mismo tipo de objeto, entonces las mismas propiedades, con diferentes valores). Pero esta vez no está llegando al código en mi contenedor MatSelect que realiza el proceso inicial, porque Angular reutiliza el elemento DOM anterior y no crea uno nuevo ni desecha el anterior, y mi @Input es el mismo.

Eso hace que mi MatSelect esté vacío, porque ahora solo tiene una opción: la del primer objeto.

¿Hay alguna forma o evento de saber cuándo Angular está reutilizando el elemento/componente DOM para que pueda ejecutar mi código inicial una y otra vez? Probé muchos de los métodos del ciclo de vida, sin suerte. ¿O tal vez el peor de los casos hace que mi MatSelect no sea reutilizable de alguna manera y provoque la recreación del componente?

Como solución, estoy clonando el objeto que estoy enviando a mi MatSelect como objeto @Input , así que lo atraparé en mi propiedad set , pero debe ser una mejor manera.

about 3 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda