Angular 2 将表单重置为初始数据,而无需单独设置每个表单控件

Fof*_*ole 3 angular2-forms angular

我有一个 formGroup,我在编辑模式下打开它并使用正确的数据进行初始化。我还将这个初始数据保存在 editForm 中。

对其进行更改后,我想将所有更改重置为初始值,例如:

this.formGroup.reset(this.staffToEdit);
Run Code Online (Sandbox Code Playgroud)

但这一切所做的一切只是在每个领域都留有空白。我发现的唯一解决方法是做类似的事情

this.formGroup.reset({field1 : this.editForm.field1});
...
Run Code Online (Sandbox Code Playgroud)

问题是我需要一些更通用的东西,将所有字段重置为其初始值,而不必遍历每个 formControl。

这可以吗?

Fof*_*ole 5

好吧,这是一个奇怪的交互,但我终于解决了它。

最初,我在表单中设置了重置按钮:

   <form .. > 
   .....
    <div>
    <button id="resetButton"
            type="reset"
            class="btn btn-primary"
            (click)="resetFormData()"> Reset
    </button>
    </div>
    </form>
Run Code Online (Sandbox Code Playgroud)

将按钮从表单中拉出后,我只需在 ngOnInit 之后保存初始值:

this._originalData = this.formGroup.value;
Run Code Online (Sandbox Code Playgroud)

之后当我想重置时我使用

protected resetFormData() {
      this.formGroup.setValue(this._originalData);
  }
Run Code Online (Sandbox Code Playgroud)

如果将按钮保留在表单中,则无法使用它来更新表单控件值!