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

如何在angular 5中仅重置表单的特定字段,angular,forms,angular5,angular-components,Angular,Forms,Angular5,Angular Components,我在一个组件文件中创建了一个函数,用于重置表单(myform): 重置整个表单效果非常好,但是否可以只重置部分元素,并保持其他元素不变。是的,您可以使用this.myform.controls来访问控件。 获取控件并在其上调用reset()尝试以下操作: this.myform.controls['comments'].reset() 试试这个: clearForm() { this.myForm.get('comments').reset(); this.myForm.g

我在一个组件文件中创建了一个函数,用于重置表单(myform):


重置整个表单效果非常好,但是否可以只重置部分元素,并保持其他元素不变。

是的,您可以使用
this.myform.controls来访问控件。
获取控件并在其上调用
reset()

尝试以下操作:

this.myform.controls['comments'].reset()
试试这个:

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

并在提交表单时调用此函数。

更新:

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

this.myForm.get('formControlName').setValue(null);
我和Angular 8一起工作

如果您想在多个字段中执行此操作,也可以:

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

this.controlNames.map((value: string) => this.myForm.get(value).setValue(null));
在html中

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

}

我的一个控件名是
comments
,所以我写了
this.myform.controls.comments.reset()
。但是我得到了错误“未解析变量注释”,你怎么能给它添加多个字段呢?说
this.myform.controls['comments',name'].reset()
我在文档中找不到这种方法。@Keithers试试这个:this.myform.reset({comments:null,name:null})@Abdessaad试过了,但没有成功,我不得不为不同的控件名复制两次代码
this.myform.controls['comments'].reset(),this.myform.controls['name'].reset()
我花了很长时间才找到这个,谢谢,我认为这是最干净的解决方案。
<select formControlName="idSala" (change)="clearField(1)">
 <option value="">Selecione uma sala</option>
</select>
clearField(value) {
if (value == 1) {
  this.formularioDeAgendamentoSala.controls['titulo'].reset();
  this.formularioDeAgendamentoSala.controls['dataHoraInicial'].reset();
}