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],
));
答案 0 :(得分:0)
使用ngModel代替value = {{}}
<input formControlName="location" type="text" [(ngModel)]="myDataForm.value.location" />
ngModel将在更新myDataForm中的值时反应性地更新表单值。