如何获取未更新的反应性表单数据?

时间:2019-08-25 20:23:43

标签: angular angular-reactive-forms

BLUF: 最终,我只是想使这一段代码起作用,但是我无法获得具有更新值且没有空值的完整对象:

this.store.dispatch(new fromStore.UpdateObject(
  {
    id: this.object$['id'],
    name: this.object$['name'],
    location: this.object$['location']
  }
));

背景:

我有一个具有名称位置的简单反应形式:

<input formControlName="location" type="text" value="{{ location }}"  />

我的构造函数是这样设置的:

  constructor(
    ...
    private formBuilder: FormBuilder
    ) { 
      this.myDataForm = this.formBuilder.group({
        'name':     ['', Validators.required ],
        'location': ['', Validators.required ]
      });
  }

当我尝试获取数据时,像这样:

console.log(this.myDataForm.value.location);

我只获取已更新字段的值。用户未更改的任何字段都将返回空。

所以我的问题变成了:如何将完整的对象发送到服务器进行存储?我尝试了不同的循环来使用现有对象和更新后的值来创建一个新的,完整的对象以发送到服务器,但是由于我的原始对象是可观察到的,所以我不断遇到不同的错误。

更新:看来我可能需要将我的可观察数据正确地连接到我的反应形式。我认为这与patchValue有关,但仍然不太清楚。这是我用来获取可观察数据(将ID与数组中的过滤器1相匹配)的代码:

this.soldier$ = this.store.select(fromStore.getAllSoldiers).pipe(map(
  soldiers => soldiers.filter(s => s.id === params.get('id'))[0],
));

1 个答案:

答案 0 :(得分:0)

使用ngModel代替value = {{}}

<input formControlName="location" type="text" [(ngModel)]="myDataForm.value.location" />

ngModel将在更新myDataForm中的值时反应性地更新表单值。