formbuilder的patchvalue或setvalue不会将字段标记为脏或触摸

时间:2017-12-19 18:12:33

标签: angular angular4-forms

我有一个多步骤表单,用户来回遍历表单。我将表单数据保存在服务中,当他回来时,我使用patchvalue来修补要形成的所有数据。我也试过了setvalue,但表单字段没有标记为脏或触摸。如何标记更新为脏和触摸的字段?

this.formBuilder.pathValue(formData);

2 个答案:

答案 0 :(得分:3)

您可以使用markAsDirty()&显式标记表单对表单对象的markAsTouched()方法。见API Here

this.formName.markAsDirty()
this.formName.markAsTouched()

答案 1 :(得分:3)

我找到的唯一解决方案是它。

 this.form = this.formBuilder.group({
      id:[null],
      name: ValidatorsUtil.name(),
      lastName: ValidatorsUtil.required(),
      email: ValidatorsUtil.email(),
      phone: ValidatorsUtil.required(),      
    });

this.form.setValue(this.client, {emitEvent: true});

Object.keys(this.form.controls).forEach( controlKey => {
       this.form.controls[controlKey].markAsDirty();
     });