Las directivas en Angular son una de las características más poderosas y flexibles del framework. Permiten modificar el comportamiento del DOM de manera declarativa. En este tema, nos enfocaremos en las directivas incorporadas que Angular proporciona de manera predeterminada.
¿Qué son las Directivas?
Las directivas son clases que pueden modificar el DOM de una aplicación Angular. Existen tres tipos principales de directivas:
- Directivas de Componente: Son directivas con una plantilla asociada.
- Directivas Estructurales: Modifican la estructura del DOM, añadiendo o eliminando elementos.
- Directivas de Atributo: Modifican el comportamiento o el aspecto de un elemento existente.
Directivas Estructurales Incorporadas
*ngIf
La directiva *ngIf se utiliza para añadir o eliminar elementos del DOM basándose en una condición booleana.
Ejemplo:
Explicación:
*ngIf="isVisible": SiisVisibleestrue, eldivse renderiza. Si esfalse, eldivno se renderiza.
*ngFor
La directiva *ngFor se utiliza para iterar sobre una colección y renderizar un elemento para cada ítem de la colección.
Ejemplo:
Explicación:
*ngFor="let item of items": Itera sobre la colecciónitemsy renderiza unlipara cadaitem.
*ngSwitch
La directiva *ngSwitch se utiliza para mostrar uno de varios elementos basándose en una expresión.
Ejemplo:
<div [ngSwitch]="color"> <div *ngSwitchCase="'red'">Color es rojo</div> <div *ngSwitchCase="'blue'">Color es azul</div> <div *ngSwitchDefault>Color no es ni rojo ni azul</div> </div>
Explicación:
[ngSwitch]="color": Evalúa la expresióncolor.*ngSwitchCase="'red'": Muestra estedivsicolores'red'.*ngSwitchDefault: Muestra estedivsi ninguna de las condiciones anteriores se cumple.
Directivas de Atributo Incorporadas
ngClass
La directiva ngClass se utiliza para añadir o eliminar clases CSS de un elemento dinámicamente.
Ejemplo:
Explicación:
[ngClass]="{ 'active': isActive, 'disabled': isDisabled }": Añade la claseactivesiisActiveestruey la clasedisabledsiisDisabledestrue.
ngStyle
La directiva ngStyle se utiliza para aplicar estilos CSS a un elemento de manera dinámica.
Ejemplo:
Explicación:
[ngStyle]="{ 'color': textColor, 'font-size': fontSize + 'px' }": Aplica el colortextColory el tamaño de fuentefontSizealdiv.
ngModel
La directiva ngModel se utiliza para enlazar datos bidireccionalmente entre el modelo y la vista.
Ejemplo:
Explicación:
[(ngModel)]="username": Enlaza el valor delinputcon la propiedadusernamedel componente. Cualquier cambio en elinputse reflejará enusernamey viceversa.
Ejercicios Prácticos
Ejercicio 1: Uso de *ngIf
Instrucciones:
- Crea un componente que tenga una propiedad
isLoggedIn. - Usa
*ngIfpara mostrar un mensaje de bienvenida solo siisLoggedInestrue.
Solución:
// app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<button (click)="toggleLogin()">Toggle Login</button>
<div *ngIf="isLoggedIn">Bienvenido, usuario!</div>
`
})
export class AppComponent {
isLoggedIn = false;
toggleLogin() {
this.isLoggedIn = !this.isLoggedIn;
}
}Ejercicio 2: Uso de *ngFor
Instrucciones:
- Crea un componente que tenga una propiedad
itemsque sea una lista de nombres. - Usa
*ngForpara mostrar cada nombre en una lista desordenada (ul).
Solución:
// app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<ul>
<li *ngFor="let item of items">{{ item }}</li>
</ul>
`
})
export class AppComponent {
items = ['Alice', 'Bob', 'Charlie'];
}Ejercicio 3: Uso de ngClass
Instrucciones:
- Crea un componente que tenga una propiedad
isActive. - Usa
ngClasspara añadir una claseactivea undivsolo siisActiveestrue.
Solución:
// app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<button (click)="toggleActive()">Toggle Active</button>
<div [ngClass]="{ 'active': isActive }">Este div puede ser activo</div>
`,
styles: [`
.active {
color: green;
font-weight: bold;
}
`]
})
export class AppComponent {
isActive = false;
toggleActive() {
this.isActive = !this.isActive;
}
}Conclusión
En esta sección, hemos explorado algunas de las directivas incorporadas más comunes en Angular, incluyendo *ngIf, *ngFor, *ngSwitch, ngClass, ngStyle y ngModel. Estas directivas son herramientas poderosas que te permiten manipular el DOM de manera declarativa y eficiente. Asegúrate de practicar con los ejercicios proporcionados para consolidar tu comprensión de estas directivas. En el próximo tema, exploraremos cómo crear tus propias directivas personalizadas.
Curso de Angular 2+
Módulo 1: Introducción a Angular
- ¿Qué es Angular?
- Configuración del Entorno de Desarrollo
- Tu Primera Aplicación Angular
- Arquitectura de Angular
Módulo 2: Conceptos Básicos de TypeScript
- Introducción a TypeScript
- Variables y Tipos de Datos en TypeScript
- Funciones y Funciones Flecha
- Clases e Interfaces
Módulo 3: Componentes y Plantillas
- Creación de Componentes
- Plantillas de Componentes
- Estilos de Componentes
- Interacción entre Componentes
Módulo 4: Directivas y Pipes
Módulo 5: Servicios e Inyección de Dependencias
- Introducción a los Servicios
- Creación y Uso de Servicios
- Inyección de Dependencias
- Inyectores Jerárquicos
Módulo 6: Enrutamiento y Navegación
Módulo 7: Formularios en Angular
- Formularios Basados en Plantillas
- Formularios Reactivos
- Validación de Formularios
- Formularios Dinámicos
Módulo 8: Cliente HTTP y Observables
- Introducción al Cliente HTTP
- Realizando Solicitudes HTTP
- Manejo de Respuestas HTTP
- Uso de Observables
Módulo 9: Gestión de Estado
- Introducción a la Gestión de Estado
- Uso de Servicios para la Gestión de Estado
- NgRx Store
- NgRx Effects
