如何仅重置 Angular 5 中表单的特定字段

问题描述 投票:0回答:6

我在我的组件文件之一中创建了一个函数来重置表单(myform):

`onSubmit() {
  if (this.myform.valid) {
    console.log("Form Submitted!");
    this.myform.reset();
  }
}`

重置整个表单效果非常好,但是是否可以只重置某些元素并保持其他元素相同。

angular forms angular5 angular-components
6个回答
52
投票

试试这个:

this.myform.controls['comments'].reset()

17
投票

试试这个:

  clearForm() {
    this.myForm.get('comments').reset();
    this.myForm.get('name').reset();
  }

并在提交表单的地方调用此函数。


4
投票

更新:

我刚刚遇到了这个问题,虽然接受的答案有效,但它有一些 tslint 警告。我最终做了:

this.myForm.get('formControlName').setValue(null);

我正在使用 Angular 8。

如果您想在多个领域执行此操作,这也适用:

private controlNames = ['nameOne', 'nameTwo'];

this.controlNames.forEach((value: string) => this.myForm.get(value).setValue(null));

2
投票

是的,您可以使用

this.myform.controls
访问控件 获得控制权并调用
reset()


2
投票

在你的html中

<select formControlName="idSala" (change)="clearField(1)">
 <option value="">Selecione uma sala</option>
</select>

<input type="text" formControlName="titulo">

<input formControlName="dataHoraInicial" type="datetime-local">

TS

clearField(value) {
if (value == 1) {
  this.formularioDeAgendamentoSala.controls['titulo'].reset();
  this.formularioDeAgendamentoSala.controls['dataHoraInicial'].reset();
}

}


1
投票

动态删除FormControl值:

private _clearFormGroupControlValue(formControlName: string) {
  this.formGroup.get(formControlName).setValue(null);
}

                          or

private _clearFormGroupControlValue(formControlName: string) {
  this.formGroup.controls[formControlName].reset();
}

                          or
private _clearFormGroupControlValue(formControlName: string) {
  this.formGroup.controls[formControlName].patchValue(null || '');
}

© www.soinside.com 2019 - 2024. All rights reserved.