ngModel y two way binding en Angular
Clase 13 de 80 • Curso de Angular 4
Contenido del curso
Introducción a Angular 4
Setup del Ambiente de Trabajo
Conceptos Básicos
- 9

Para qué nos sirven los Módulos y Componentes
08:10 min - 10

Tipos de Data Binding y String Interpolation
05:05 min - 11

Property Binding
06:04 min - 12

Event Binding
03:04 min - 13

ngModel y two way binding en Angular
Viendo ahora - 14

Directivas en Angular 4 y ngFor
07:39 min - 15

Cómo usar ngIf en Angular 4.0
03:04 min - 16

Instalando librerías con NPM (Google Maps)
06:48 min
Directivas
Angular UI
Ruteo
- 24

Qué hace el router en Angular 4
03:11 min - 25

Implementación de Rutas en el Proyecto
07:36 min - 26

Href vs router link: navegación angular
02:27 min - 27

Resaltando el link activo con CSS para indicar visualmente en que componente nos encontramos
01:53 min - 28

Parámetros de ruta con routerLink en Angular
06:01 min - 29

Parámetros tipo Query
03:53 min - 30

Creando una vista de detalle para el proyecto
09:06 min - 31

Página de contacto Angular desde cero
07:45 min
Servicios
- 32

Servicios en Angular para compartir datos
00:58 min - 33

Creando nuestro propio servicio
07:11 min - 34

Configurando Firebase en nuestro proyecto
05:12 min - 35

Guardando Records en Firebase
12:20 min - 36

Obteniendo records desde Firebase
08:40 min - 37

Obteniendo coordenadas usando Geocoding
13:45 min - 38

Reto: Crear una vista para editar records
09:29 min - 39

Mostrando marcadores en el Mapa de Google
03:02 min
Conexión Remota (Http y Sockets)
Pipes
Animaciones en Angular
Testing en Angular
Autenticación y Protección de Rutas
- 59

Cómo funcionan los JSON Web Tokens
03:05 min - 60

Preparación de vistas para login y registro
11:58 min - 61

Registrando usuarios
07:29 min - 62

Loggeando usuarios
07:18 min - 63

Guardias canActivate en Angular: Proteger rutas con autenticación
11:09 min - 64

Cómo integrar Facebook login con Firebase
09:08 min - 65

Logout en Angular con Firebase
05:28 min
RxJS
- 66

Cómo funciona RxJS con metáfora de oficina
02:09 min - 67

Mostrar email del usuario logueado en Angular
06:32 min - 68

Uso de los Observables
04:30 min - 69

Cómo implementar type ahead con Observables y RxJS
10:43 min - 70

Implementar formularios reactivos con type ahead
07:58 min - 71

Cómo rellenar campos automáticamente con Google
01:28 min
Publicando nuestro proyecto
Fin del curso
Sesiones en vivo
Contenido Bonus
Aprende a dominar el two way data binding en Angular con ngModel para sincronizar datos entre HTML y TypeScript sin lógica adicional. Esta técnica integra event binding, property binding y string interpolation para una comunicación fluida en ambos sentidos.
¿Qué es two way data binding y por qué importa?
El two way data binding permite que los cambios en el HTML actualicen la variable en TypeScript y, a la vez, que los cambios en TypeScript se reflejen en el HTML. Con ngModel y la combinación de paréntesis y corchetes, aceptas el bindeo en dos vías.
- Event binding: usa paréntesis para escuchar eventos del usuario.
- Property binding: usa corchetes para pasar valores a propiedades del HTML.
- String interpolation: usa llaves dobles para mostrar valores dinámicos.
- ngModel: combina ambos bindeos para sincronizar automáticamente.
¿Cómo se implementa con ngModel en Angular?
En el template se crea un input y un texto que muestra el valor usando string interpolation.
<hr />
<input type="text" placeholder="Tu nombre" [(ngModel)]="nombre" />
<p>Mi nombre es {{ nombre }}</p>
En el componente, se declara la variable antes del constructor e inicializada con cadena vacía. Puede tiparse como string.
export class MiComponente {
nombre: string = '';
// constructor() {}
}
- Clave: al teclear, el valor de
nombrese actualiza automáticamente y se refleja en la vista sin código adicional en TypeScript. - Ventaja: no necesitas leer manualmente el input ni gestionar eventos para actualizar la UI.
¿Cómo se integran event, property e interpolation en esta sintaxis?
La sintaxis [(ngModel)] conjuga paréntesis y corchetes en una sola notación. Así, el input emite cambios (como un evento) y también recibe el valor desde la propiedad de la clase, mientras la interpolación {{ nombre }} muestra el valor actual.
¿Qué módulo habilita ngModel y cómo evitar el error?
Si ves un error al usar ngModel, falta importar el módulo de formularios. Angular no lo carga de forma automática: debes agregar FormsModule en app.module.ts dentro de imports y su importación correspondiente.
// app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, FormsModule],
bootstrap: [AppComponent]
})
export class AppModule {}
- Importante: verifica que el editor haya agregado la línea de importación de FormsModule correctamente.
- Resultado: tras guardar y refrescar en Chrome, el two way data binding funciona como se espera.
¿Qué ejercicio práctico refuerza el aprendizaje?
Crea una segunda caja de texto y concatena ambos nombres en la vista.
- Agrega otro input con
[(ngModel)]paranombre2. - Muestra la concatenación:
{{ nombre }} {{ nombre2 }}. - Asegúrate de declarar
nombre2en la clase e inicializarlo con''.
¿Ya lo intentaste? Comparte tu solución y dudas en los comentarios.