Cargando...

Directivas Estructurales

Las Directivas Estructurales en Angular son un pilar fundamental para el desarrollo de interfaces dinámicas y reutilizables en aplicaciones modernas. Su función principal es modificar la estructura del DOM agregando, eliminando o replicando elementos según condiciones específicas o datos proporcionados por los componentes. A diferencia de las directivas de atributos, que alteran la apariencia o el comportamiento de los elementos, las Directivas Estructurales afectan directamente la presencia de elementos en el DOM. Los ejemplos más comunes incluyen ngIf para renderizado condicional, ngFor para iteraciones sobre colecciones y ngSwitch para mostrar diferentes plantillas según una condición.
El dominio de estas directivas es crucial en aplicaciones SPA (Single Page Application), donde la eficiencia en la renderización y la gestión del estado impacta directamente en la experiencia del usuario. Mediante Directivas Estructurales, los desarrolladores pueden integrar conceptos clave de Angular como componentes, gestión de estado, flujo de datos y ciclo de vida, construyendo interfaces dinámicas y mantenibles.
En este tutorial, aprenderás a utilizar
ngIf, *ngFor y ng-template para crear componentes reutilizables, optimizar la renderización de listas y manejar contenido condicional. Además, se abordarán buenas prácticas, errores comunes y técnicas de optimización para desarrollar aplicaciones Angular robustas y eficientes.

Ejemplo Básico

typescript
TYPESCRIPT Code
import { Component } from '@angular/core';

@Component({
selector: 'app-directivas-demo',
template: ` <h2>Lista de proyectos</h2> <ul>
<li *ngFor="let proyecto of proyectos">{{ proyecto }}</li> </ul>

<button (click)="toggleMensaje()">Mostrar/Ocultar mensaje</button>
<p *ngIf="mostrarMensaje">Este es un mensaje condicional.</p>

`
})
export class DirectivasDemoComponent {
proyectos: string[] = ['Proyecto A', 'Proyecto B', 'Proyecto C'];
mostrarMensaje: boolean = false;

toggleMensaje() {
this.mostrarMensaje = !this.mostrarMensaje;
}
}

En este ejemplo, ngFor se utiliza para iterar sobre el array proyectos y generar un elemento de lista por cada proyecto. ngIf permite mostrar u ocultar el párrafo según el valor booleano mostrarMensaje. Al hacer clic en el botón, el método toggleMensaje() actualiza el estado y Angular renderiza automáticamente los cambios en el DOM. Este ejemplo integra conceptos clave de Angular, como la vinculación de datos, gestión de estado y ciclo de vida de componentes, demostrando cómo crear componentes reutilizables sin manipular directamente el DOM y manteniendo un rendimiento óptimo.

Ejemplo Práctico

typescript
TYPESCRIPT Code
import { Component, Input } from '@angular/core';

@Component({
selector: 'app-user-card',
template: `     <div *ngIf="usuario" class="card">       <h3>{{ usuario.nombre }}</h3>       <p>Email: {{ usuario.email }}</p>       <p *ngIf="usuario.activo; else inactivo">Estado: Activo</p>       <ng-template #inactivo>Estado: Inactivo</ng-template>     </div>
`,
styles: [`     .card { border: 1px solid #ccc; padding: 16px; margin: 8px 0; border-radius: 8px; }
`]
})
export class UserCardComponent {
@Input() usuario: { nombre: string; email: string; activo: boolean } | null = null;
}

@Component({
selector: 'app-user-list',
template: `     <app-user-card *ngFor="let usuario of usuarios" [usuario]="usuario"></app-user-card>
`
})
export class UserListComponent {
usuarios = [
{ nombre: 'Alicia', email: '[[email protected]](mailto:[email protected])', activo: true },
{ nombre: 'Bob', email: '[[email protected]](mailto:[email protected])', activo: false },
{ nombre: 'Carlos', email: '[[email protected]](mailto:[email protected])', activo: true }
];
}

Este ejemplo avanzado muestra cómo UserCardComponent y UserListComponent combinan ngIf, ngFor y ng-template para crear componentes reutilizables y listas dinámicas. UserCardComponent verifica si el usuario existe con ngIf y usa ng-template para mostrar contenido alternativo cuando el usuario no está activo. UserListComponent itera sobre el array usuarios con ngFor, pasando los datos a cada componente hijo mediante @Input. Este enfoque mantiene separada la lógica de presentación, optimiza la renderización y facilita el mantenimiento, siguiendo las mejores prácticas de Angular.

Buenas prácticas y errores comunes con Directivas Estructurales:

  • Usar ngIf, ngFor y ng-template para manejar la visualización de elementos, evitando manipular el DOM directamente.
  • Mantener separada la lógica de negocio y la presentación; no modificar datos directamente en el template.
  • Aplicar trackBy en *ngFor para listas grandes y reducir renders innecesarios.
  • Gestionar el flujo de datos entre componentes mediante @Input y eventos personalizados.
    Errores frecuentes:

  • Modificar arrays u objetos directamente en el template.

  • Anidar demasiado las directivas estructurales.
  • No validar null o undefined en *ngIf.
    Optimización y seguridad:

  • trackBy evita renders innecesarios y mejora el rendimiento.

  • ng-template previene la creación de elementos innecesarios.
  • Validar la entrada de usuarios para evitar vulnerabilidades.

📊 Tabla de Referencia

Angular Element/Concept Description Usage Example
*ngIf Muestra u oculta elementos según una condición <p *ngIf="isVisible">Mensaje visible</p>
*ngFor Itera sobre colecciones y genera elementos <li *ngFor="let item of items">{{ item }}</li>
ng-template Plantilla reutilizable para contenido condicional <ng-template #alt>Contenido alternativo</ng-template>
@Input Envía datos del componente padre al hijo <child [data]="parentData"></child>
trackBy Optimiza performance en *ngFor *ngFor="let item of items; trackBy: trackById"

El dominio de las Directivas Estructurales permite construir interfaces dinámicas, escalables y optimizadas. Se recomienda avanzar hacia la gestión de estado con NgRx, estrategias de detección de cambios y manejo de datos asincrónicos. Estas técnicas facilitan la reutilización de componentes, simplifican el mantenimiento y aseguran aplicaciones Angular confiables. La documentación oficial y ejemplos prácticos ayudan a consolidar los conocimientos adquiridos.

🧠 Pon a Prueba tu Conocimiento

Listo para Empezar

Pon a Prueba tu Conocimiento

Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema

4
Preguntas
🎯
70%
Para Aprobar
♾️
Tiempo
🔄
Intentos

📝 Instrucciones

  • Lee cada pregunta cuidadosamente
  • Selecciona la mejor respuesta para cada pregunta
  • Puedes repetir el quiz tantas veces como quieras
  • Tu progreso se mostrará en la parte superior