Introducción
En Angular, los componentes son la piedra angular de cualquier aplicación. Un componente en Angular es una pieza de la interfaz de usuario (UI) que se puede reutilizar y que encapsula su propia lógica, plantilla y estilos. En esta sección, aprenderemos qué son los componentes, cómo funcionan y por qué son esenciales para el desarrollo de aplicaciones en Angular.
¿Qué es un Componente?
Un componente en Angular es una clase TypeScript que interactúa con una plantilla HTML para definir una vista. Cada componente tiene tres partes principales:
- Clase: Define la lógica y los datos del componente.
- Plantilla: Define la estructura y el contenido HTML del componente.
- Estilos: Define los estilos CSS específicos del componente.
Estructura de un Componente
Un componente típico en Angular se ve así:
import { Component } from '@angular/core'; @Component({ selector: 'app-ejemplo', templateUrl: './ejemplo.component.html', styleUrls: ['./ejemplo.component.css'] }) export class EjemploComponent { titulo: string = 'Hola, Angular!'; }
- @Component: Es un decorador que marca una clase como un componente Angular y proporciona metadatos sobre el componente.
- selector: Es el nombre del elemento HTML que representa el componente.
- templateUrl: Es la ruta al archivo HTML que define la plantilla del componente.
- styleUrls: Es la ruta al archivo CSS que define los estilos del componente.
Plantilla del Componente
La plantilla de un componente define su estructura HTML. Aquí hay un ejemplo de una plantilla simple:
En este ejemplo, {{ titulo }}
es una expresión de interpolación que muestra el valor de la propiedad titulo
de la clase del componente.
Estilos del Componente
Los estilos de un componente definen su apariencia. Aquí hay un ejemplo de un archivo de estilos:
Ciclo de Vida de un Componente
Los componentes en Angular tienen un ciclo de vida que incluye varias etapas desde su creación hasta su destrucción. Angular proporciona varios métodos de ciclo de vida que puedes usar para ejecutar lógica en diferentes etapas del ciclo de vida de un componente.
Métodos del Ciclo de Vida
- ngOnInit: Se llama una vez que el componente ha sido inicializado.
- ngOnChanges: Se llama cada vez que se cambian las propiedades de entrada vinculadas.
- ngOnDestroy: Se llama justo antes de que el componente sea destruido.
Ejemplo:
import { Component, OnInit, OnDestroy } from '@angular/core'; @Component({ selector: 'app-ejemplo', templateUrl: './ejemplo.component.html', styleUrls: ['./ejemplo.component.css'] }) export class EjemploComponent implements OnInit, OnDestroy { titulo: string = 'Hola, Angular!'; ngOnInit() { console.log('Componente inicializado'); } ngOnDestroy() { console.log('Componente destruido'); } }
Ejercicio Práctico
Objetivo
Crear un componente simple que muestre un mensaje de bienvenida y cambie el color del texto al hacer clic en un botón.
Pasos
-
Crear el Componente:
- Usa Angular CLI para generar un nuevo componente.
ng generate component bienvenida
-
Modificar la Clase del Componente:
- Abre
bienvenida.component.ts
y agrega una propiedad para el mensaje y un método para cambiar el color del texto.
import { Component } from '@angular/core'; @Component({ selector: 'app-bienvenida', templateUrl: './bienvenida.component.html', styleUrls: ['./bienvenida.component.css'] }) export class BienvenidaComponent { mensaje: string = 'Bienvenido a Angular!'; color: string = 'black'; cambiarColor() { this.color = this.color === 'black' ? 'blue' : 'black'; } }
- Abre
-
Modificar la Plantilla del Componente:
- Abre
bienvenida.component.html
y agrega el HTML para mostrar el mensaje y el botón.
<h1 [style.color]="color">{{ mensaje }}</h1> <button (click)="cambiarColor()">Cambiar Color</button>
- Abre
-
Modificar los Estilos del Componente:
- Abre
bienvenida.component.css
y agrega estilos si es necesario.
h1 { font-family: Arial, sans-serif; } button { margin-top: 10px; }
- Abre
-
Incluir el Componente en la Aplicación:
- Abre
app.component.html
y agrega el selector del nuevo componente.
<app-bienvenida></app-bienvenida>
- Abre
Solución
El código completo del componente BienvenidaComponent
debería verse así:
bienvenida.component.ts:
import { Component } from '@angular/core'; @Component({ selector: 'app-bienvenida', templateUrl: './bienvenida.component.html', styleUrls: ['./bienvenida.component.css'] }) export class BienvenidaComponent { mensaje: string = 'Bienvenido a Angular!'; color: string = 'black'; cambiarColor() { this.color = this.color === 'black' ? 'blue' : 'black'; } }
bienvenida.component.html:
<h1 [style.color]="color">{{ mensaje }}</h1> <button (click)="cambiarColor()">Cambiar Color</button>
bienvenida.component.css:
app.component.html:
Conclusión
En esta sección, hemos aprendido qué son los componentes en Angular, cómo se estructuran y cómo funcionan. También hemos explorado el ciclo de vida de un componente y creado un componente simple como ejercicio práctico. Los componentes son fundamentales para construir aplicaciones modulares y reutilizables en Angular. En la próxima sección, profundizaremos en cómo crear componentes y cómo interactúan entre sí.
Curso de Angular
Módulo 1: Introducción a Angular
- ¿Qué es Angular?
- Configuración del Entorno de Desarrollo
- Arquitectura de Angular
- Primera Aplicación Angular
Módulo 2: Componentes de Angular
- Entendiendo los Componentes
- Creación de Componentes
- Plantillas de Componentes
- Estilos de Componentes
- Interacción entre Componentes
Módulo 3: Enlace de Datos y Directivas
- Interpolación y Enlace de Propiedades
- Enlace de Eventos
- Enlace de Datos Bidireccional
- Directivas Incorporadas
- Directivas Personalizadas
Módulo 4: 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 5: Enrutamiento y Navegación
Módulo 6: Formularios en Angular
- Formularios Basados en Plantillas
- Formularios Reactivos
- Validación de Formularios
- Formularios Dinámicos
Módulo 7: Cliente HTTP y Observables
- Introducción al Cliente HTTP
- Realizando Solicitudes HTTP
- Manejo de Respuestas HTTP
- Uso de Observables
- Manejo de Errores
Módulo 8: 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
- NgRx Entity
Módulo 9: Pruebas en Angular
- Pruebas Unitarias
- Pruebas de Componentes
- Pruebas de Servicios
- Pruebas de Extremo a Extremo
- Simulación de Dependencias
Módulo 10: Conceptos Avanzados de Angular
- Angular Universal
- Optimización del Rendimiento
- Internacionalización (i18n)
- Pipes Personalizados
- Animaciones en Angular