Para completar un poco más de excelentes respuestas anteriores, debe tener en cuenta que los formularios aprovechan los observables para detectar y manejar los cambios de valor. Es algo realmente importante y poderoso. Tanto Mark como dfsq describieron este aspecto en sus respuestas.
Los observables permiten no solo usar el subscribe
método (algo similar al then
método de promesas en Angular 1). Puede ir más allá si es necesario para implementar algunas cadenas de procesamiento de datos actualizados en formularios.
Quiero decir que puede especificar a este nivel el tiempo de rebote con el debounceTime
método. Esto le permite esperar una cantidad de tiempo antes de manejar el cambio y manejar correctamente varias entradas:
this.form.valueChanges
.debounceTime(500)
.subscribe(data => console.log('form changes', data));
También puede conectar directamente el procesamiento que desea activar (algunos asincrónicos, por ejemplo) cuando se actualizan los valores. Por ejemplo, si desea manejar un valor de texto para filtrar una lista basada en una solicitud AJAX, puede aprovechar el switchMap
método:
this.textValue.valueChanges
.debounceTime(500)
.switchMap(data => this.httpService.getListValues(data))
.subscribe(data => console.log('new list values', data));
Incluso va más allá al vincular el observable devuelto directamente a una propiedad de su componente:
this.list = this.textValue.valueChanges
.debounceTime(500)
.switchMap(data => this.httpService.getListValues(data))
.subscribe(data => console.log('new list values', data));
y mostrarlo usando la async
tubería:
<ul>
<li *ngFor="#elt of (list | async)">{{elt.name}}</li>
</ul>
Solo para decir que necesitas pensar la forma de manejar formas de manera diferente en Angular2 (una forma mucho más poderosa ;-)).
Espero que te ayude, Thierry