首页 > 解决方案 > 如果我更改它们,我只能从表单中获取值

问题描述

我有这个表格:

<div class="form-group modal-body">
    <form [formGroup]="mediadorForm" #form>
      <input type="hidden" name="angcod" id="angcod" formControlName="angcod" class="form-control" [(value)]="mediador.angcod" #angcod>
      <input type="text" name="angnom" id="angnom" formControlName="angnom" class="form-control" placeholder="Nombre del mediador" [(value)]="mediador.angnom" #angnom required>
      <div class="row mt-3">
        <div class="col-5 pt-1">Factura comisiones</div>
        <div class="col-7">
          <select class="form-control" name="angfac" id="angfac" formControlName="angfac" #angfac>
            <option [(value)]="sn.desres" *ngFor="let sn of sino" [selected]="sn.desres === mediador.angfac">{{ sn.desnom }}</option>
          </select>
        </div>
      </div>
    </form>
  </div>

  <div class="modal-footer">
    <button type="button" class="btn btn-success" (click)="enviaForm(mediadorForm); editMediadorModal.close();">- Guardar cambios -</button>
    <button type="button" class="btn btn-secondary" data-dismiss="modal" (click)="editMediadorModal.close();">Cancelar</button>
  </div>

然后在组件上:

export class MediadorComponent implements DoCheck, OnInit {

  mediadorForm: FormGroup;
  mediador: Mediador;

  constructor(private fb: FormBuilder) {

  }

  ngOnInit() {
    this.mediadorForm = this.fb.group({
      angcod: '',
      angnom: '',
      angfac: ''
    });
  }

  ngDoCheck() {
    this.mediador = this.mediadorService.mediador;
  }

  enviaForm(form: any) {
    console.log(form.value);
  }
}

表单将其值加载到字段中,但如果我发送它,控制台日志输出

Object { angcod: "", angnom: "", angfac: "" }

如果我什么都不改变。如果我将 angnom 的值从“John Doe”更改为“Barak Obama”,它会输出:

Object { angcod: "", angnom: "Barak Obama", angfac: "" }

但未更改的值为空。

我究竟做错了什么?

标签: angulartypescript

解决方案


将值分配给表单的最佳方法是

    this.mediadorForm = this.fb.group({ angcod: 'mediador.angcod', 
angnom: 'mediador.angnom', 
angfac: 'mediador.angfac' });

推荐阅读