Tengo un problema al crear formularios angulares2 dinámicos con controles y cuadros de selección, por ejemplo, este plunker :
<select class="form-control" ngControl="power"> <option *ngFor="#p of powers" [value]="p">{{p}}</option> </select> Puedes seleccionar un poder de héroe y el control tendrá el mismo valor. Pero si presiona Change Powers , el valor seleccionado será nulo pero el valor de control seguirá siendo el valor anterior. Creo que este es un problema grave, ya que es una fuente de muchos errores cuando el formulario muestra una cosa, pero en realidad enviará algo diferente, ¿hay alguna forma de actualizar el contenido del control? Existe updateValue() pero debe establecer manualmente el valor en todos esos casos.
También hay un caso similar cuando actualiza las opciones del cuadro de selección después de la creación del formulario, mostrará un valor seleccionado en el cuadro seleccionado, mientras que el valor de control sería nulo, ¿alguna idea sobre cómo lidiar con esto?
En Angular 2 Final (RC5+) hay nuevas API para actualizar los valores del formulario. El método API patchValue() admite actualizaciones de formularios parciales, donde solo necesitamos especificar algunos de los campos:
this.form.patchValue({id: selected.id}) También existe el método API setValue() que necesita un objeto con todos los campos del formulario. Si falta un campo, obtendremos un error.
a partir de la última actualización de la sintaxis angular2 será así
this.form.controls['power'].setValue('anthing here');Actualmente, esto es lo único que puede hacer (como se menciona en la pregunta)
this.form.controls['power'].updateValue(null);Hay un problema abierto para permitir restablecer un formulario https://github.com/angular/angular/issues/4933
También hay una solicitud de extracción, pero eso también le permite hacerlo "manualmente" para cada control, pero también permite restablecer estados como prístino, tocado, ... https://github.com/angular/angular/pull/6679