如何在表单上设置多个值?

时间:2019-01-18 03:22:05

标签: angular typescript

我知道,如果我想在字段上设置一个值,则可以使用

  

setValue

  

patchValue

但是,我正面临这个问题,我不想在每个字段上一个设置值。

这是我的表单代码:

registrationForm = this._fb.group({
 firstName: ['', Validators.required],
 lastName: [''],
 age: [''],
 country: ['', Validators.required],
 hobby: [''],
 sport: [''],
 status: [''],
 country: ['', Validators.required],
 ...
 ...
});

我有一个名为 person 的对象,它具有所有这些属性,因此为了设置值,我正在这样做(有效),但是我想要找到一种更好的方法:

registrationForm = this._fb.group({
 firstName: [this.person.firstName, Validators.required],
 lastName: [this.person.lastName],
 age: [this.person.age],
 country: [this.person.country, Validators.required],
 hobby: [this.person.hobby],
 sport: [this.person.sport],
 status: [this.person.status],
 country: [this.person.country, Validators.required],
 ...
 ...
});

我在想的另一种方法是从person对象创建一个对象,以便可以使用setValue或patchValue。像这样:

 Object
 .keys(dataObject)
 .map((key) => {
 return { firstName: firstName, lastName: lastName, age: age ...}
 });

有人能指出我正确的方向吗?提前非常感谢!

1 个答案:

答案 0 :(得分:0)

如果您知道person对象与表单的属性相匹配的事实,则可以对setValue的整个表单使用person

this.myFormGroup.setValue(this.person);

DEMO


编辑:如果您的person对象中有其他属性,而这些属性不在您的表单中,那么您只需使用patchValue(),它将采用与以下形式匹配的属性:

this.myFormGroup.patchValue(this.person);

DEMO