Skip to content

# Enlace de Datos (Data Binding) en Angular

Índice ​

  1. Introducción al enlace de datos
  2. Tipos de enlace de datos en Angular
    • 2.1 Interpolación (Interpolation)
    • 2.2 Enlace de propiedad (Property Binding)
    • 2.3 Enlace de evento (Event Binding)
    • 2.4 Enlace bidireccional (Two-Way Binding)
  3. Ejemplos prácticos de enlace de datos
  4. Conclusiones

1. Introducción al Enlace de Datos ​

El enlace de datos (Data Binding) es una de las características más potentes de Angular. Permite establecer una conexión fluida entre el modelo (los datos en el componente) y la vista (el HTML). Esto asegura que los cambios realizados en uno se reflejen automáticamente en el otro, facilitando la sincronización y actualizaciones dinámicas.

Ventajas del enlace de datos en Angular: ​

  • Sincronización automática: Cambios en el componente o en la vista se reflejan instantáneamente.
  • Menos código: Simplifica la manipulación del DOM.
  • Interactividad mejorada: Ideal para aplicaciones dinámicas y reactivas.

2. Tipos de Enlace de Datos en Angular ​

2.1 Interpolación (Interpolation) ​

La interpolación muestra valores del componente directamente en la vista mediante la sintaxis {{ }}.

Ejemplo:

html
<h1>{{ titulo }}</h1>
typescript
@Component({
  template: `<h1>{{ titulo }}</h1>`
})
export class MiComponente {
  titulo = "¡Hola, Angular!";
}
  • La propiedad titulo del componente se muestra dinámicamente en la etiqueta <h1>.

2.2 Enlace de Propiedad (Property Binding) ​

El enlace de propiedad establece valores para propiedades de elementos HTML o componentes utilizando la sintaxis [ ].

Ejemplo:

html
<button [disabled]="esDesactivado">Haz clic</button>
typescript
@Component({
  template: `<button [disabled]="esDesactivado">Haz clic</button>`
})
export class MiComponente {
  esDesactivado = true;
}
  • Si esDesactivado es true, el botón estará desactivado.

2.3 Enlace de Evento (Event Binding) ​

El enlace de evento permite manejar interacciones del usuario (clics, teclas presionadas, etc.) con la sintaxis ( ).

Ejemplo:

html
<button (click)="saludar()">Saludar</button>
typescript
@Component({
  template: `<button (click)="saludar()">Saludar</button>`
})
export class MiComponente {
  saludar() {
    console.log("¡Hola desde Angular!");
  }
}
  • Cuando el usuario hace clic en el botón, se ejecuta el método saludar() del componente.

2.4 Enlace Bidireccional (Two-Way Binding) ​

El enlace bidireccional sincroniza el componente y la vista al mismo tiempo utilizando [(ngModel)].

Ejemplo:

html
<input [(ngModel)]="nombre" placeholder="Nombre">
<p>Hola, {{ nombre }}</p>
typescript
@Component({
  template: `
    <input [(ngModel)]="nombre" placeholder="Nombre">
    <p>Hola, {{ nombre }}</p>
  `
})
export class MiComponente {
  nombre = "";
}
  • Cualquier cambio en el campo de entrada se reflejará en nombre, y viceversa.

Nota: Para usar ngModel, debes importar el módulo FormsModule en el archivo del módulo correspondiente.


3. Ejemplos Prácticos de Enlace de Datos ​

Ejemplo 1: Interpolación ​

html
<h1>{{ mensaje }}</h1>
typescript
@Component({
  template: `<h1>{{ mensaje }}</h1>`
})
export class EjemploInterpolacion {
  mensaje = "Bienvenido a Angular";
}
  • Muestra dinámicamente el valor de la propiedad mensaje en la vista.

Ejemplo 2: Enlace de Propiedad ​

html
<img [src]="urlImagen" alt="Imagen dinámica">
typescript
@Component({
  template: `<img [src]="urlImagen" alt="Imagen dinámica">`
})
export class EjemploPropiedad {
  urlImagen = "https://angular.io/assets/images/logos/angular/angular.png";
}
  • Enlaza dinámicamente la propiedad src de la etiqueta <img> al valor de urlImagen.

Ejemplo 3: Enlace de Evento ​

html
<button (click)="mostrarAlerta()">¡Alerta!</button>
typescript
@Component({
  template: `<button (click)="mostrarAlerta()">¡Alerta!</button>`
})
export class EjemploEvento {
  mostrarAlerta() {
    alert("¡Has hecho clic!");
  }
}
  • Llama al método mostrarAlerta cuando el usuario hace clic en el botón.

Ejemplo 4: Enlace Bidireccional ​

html
<input [(ngModel)]="texto" placeholder="Escribe algo">
<p>Escribiste: {{ texto }}</p>
typescript
@Component({
  template: `
    <input [(ngModel)]="texto" placeholder="Escribe algo">
    <p>Escribiste: {{ texto }}</p>
  `
})
export class EjemploBidireccional {
  texto = "";
}
  • Sincroniza el valor del campo de entrada con la propiedad texto.

4. Conclusiones ​

El enlace de datos en Angular permite una comunicación fluida entre el componente y la vista, mejorando la interactividad de las aplicaciones.

  • Usa Interpolación para mostrar valores simples.
  • Usa Enlace de Propiedad para manipular atributos HTML.
  • Usa Enlace de Evento para responder a interacciones del usuario.
  • Usa Enlace Bidireccional para sincronizar datos entre el componente y el DOM.