¿Cómo puedo obtener una colección de todas las plantillas (TemplateRef) dentro de un componente? Funciona bien con ViewChild pero ViewChildren no está definido...
Utilizo una solución de esta pregunta . Plunker con el ejemplo completo.
@Component({ selector: 'my-app', template: ` <div> <template #model>...</template> <template #color>...</template> </div>` }) export class App { @ViewChild('model') model; @ViewChild('color') color; @ViewChildren(TemplateRef) templates: QueryList<TemplateRef>; ngAfterContentInit() { console.log(this.templates); // undefined console.log(this.model); // TemplateRef_ {...} } } Necesito templates para un componente de cuadrícula donde es posible definir plantillas para columnas. Desafortunadamente, ng-content no admite la proyección dinámica, por lo que estoy tratando de lograrlo con plantillas.
Si mueve console.log('child', this.templates); a ngAfterViewInit() entonces funciona.
ngAfterViewInit() { console.log('child', this.templates); } Esperaba que también funcionara en ngAfterContentInit() . Parece que en esta versión angular ngAfterContentInit() se ejecuta antes ngAfterViewInit() . Estaba seguro de que esto era al revés antes.
Necesita implementar ChangeDetectorRef.detectChanges(); al final de la función de cualquier niño