Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

268
Vistas
@ViewChildren no se actualiza con elementos DOM agregados dinámicamente

Tengo la siguiente estructura DOM

 <div #carousalElement> <div class="singleCaousalElement"> <a> <img [src]="carousalURL1" class="carousalImage"> </a> </div> <div class="singleCaousalElement"> <a> <img [src]="carousalURL2" class="carousalImage"> </a> </div> </div>

Puedo obtener todos los divs con la clase carousalElements usando ViewChildren

 @ViewChildren('carousalElement') carousalElements;

PROBLEMA: cuando agrego dinámicamente un nuevo div debajo del div #carousalElement , no aparece debajo de la matriz carousalElements .

¿Me estoy perdiendo algo obvio?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Angular no reconoce HTML no agregado por directivas o API de Angular. Además, si <div> no tiene una variable de plantilla #carousalElement , @ViewChildren('carousalElement') no la encontrará.

Las variables de plantilla deben agregarse estáticamente en la plantilla de componentes. Agregarlos dinámicamente no tiene sentido. Angular procesa construcciones de plantillas específicas de Angular solo durante la compilación de una plantilla.

about 4 years ago · Santiago Trujillo Denunciar

0

Puede agregar el servicio ChangeDetectorRef y llamar al método this.changeDetectorRef.detectChanges() cuando agrega otro elemento secundario con la referencia a la que hizo referencia en ViewChildren QueryList. ¡Eso funcionó para mí!

about 4 years ago · Santiago Trujillo Denunciar

0

En el momento en que agrega un nuevo elemento en su carousalElement div en ese momento, verifique en DOM si ese elemento está disponible o no.

Si está disponible, obtenga el elemento por:

 this.carousalElements.NativeElement......

Si no está disponible, intente establecer un tiempo de espera y luego verifique nuevamente en DOM

 setTimeout(() => { //your logic }, 200);

Todavía no lo encuentra, intente con la siguiente lógica:

 @ViewChildren('carousalElement', { read: ViewContainerRef }) public carousalElement: QueryList<ViewContainerRef>;

Y donde revisas console.log(this.carousalElement)

Déjame saber lo que da

about 4 years ago · Santiago Trujillo Denunciar
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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda