我需要用用户数据填写表格才能编辑它们,但我不知道该怎么做。
这是表格。
this.formEditarUser = this._builder.group({
name: ['', Validators.required],
cpostal: ['', Validators.required],
provincia: ['', Validators.required],
localidad: ['', Validators.required],
pais: ['', Validators.required],
surname: ['', Validators.required],
imagen: [''],
});
我试图把它放在给我带来用户数据的函数中,但它给出了一个错误,我尝试用一个单独的函数填充它,但它也没有填充它。
rellenarFormuluario() {
this.formEditarUser.value.name.setValue(this.nombre);
}
如果我直接在构造函数中执行它,它只会显示在表单上。
在这里,我将名称分配给变量
getUserEditar() {
this._serviceUser.edit(this.idUserConectado).subscribe(
response => {
this.user = response;
this.nombre = response.name;
this.rellenarFormuluario();
console.log(this.formEditarUser.value.name);
}
);
}
要填写响应式表单的字段,角度为您提供了两种方法
patchValue
和setValue
. 这里是文档。patchValue 会更新它在您作为参数传递给它的模型中找到的所有字段。如果它没有找到一个字段,它不会抛出任何错误。
setValue在更新值时更加严格,也就是说,它验证模型是否具有与表单字段相同的结构和属性。如果缺少任何内容,则会引发错误。
想象一下,在您的情况下,您只想更新字段
name
和cpostal
.如果你使用patchValue更新不会给你一个错误。
但是使用setValue它会给您一个错误,因为您需要传递未更新的字段。
更新所有表单域
更新单个字段