如何清除角反应形式的FormArray值?

时间:2019-06-16 15:23:00

标签: angular

在这里,我想将FormArray的长度设为零。 (提到此表格一切正常)

profileForm: FormGroup;

ngOnInit() {
   this.profileForm = new FormGroup({
      nod_title: new FormControl(),
      nod_subtitle: new FormControl(null),
      nod_name: new FormControl(null),
      nod_occupation: new FormControl(null),
      nod_description: new FormControl(null),
      nod_tags: new FormArray([new FormControl('hello'), new FormControl('world')]),
    });
  }

 resetTags() {
   if (this.profileForm.value.nod_tags.length) {   // here I tried
     this.profileForm.value.nod_tags.clear();
     console.log(this.profileForm.value.nod_tags)
 }

<button type="button" (click)="resetTags()"> Reset taggs </button>

在这里,我要清空nod_tags值,console.log()应该返回一个空数组。

6 个答案:

答案 0 :(得分:1)

resetTags()中,获取所需的 FormControl 的相应值。现在,您可以在其上调用reset(),如下所示:

resetTags() {
   this.profileForm.controls['nod_tags'].reset();
}

根据您的评论,将其设置为空数组,请使用:

resetTags() {
   let arr = <FormArray>this.profileForm.controls['nod_tags'];
   arr.clear();
}

答案 1 :(得分:1)

尝试一下

this.form = this._formB.group({
    blocks: this._formB.array(["a","b","c"])
});

this.form.controls['blocks'].value.length = 0;

答案 2 :(得分:0)

我认为这是您想要的方式

resetTags() {
    this.nodTags.clear();
 }

 get nodTags(): FormArray {
   return this.profileForm.get('nod_tags') as FormArray;
 }

我还做了一个小demo

答案 3 :(得分:0)

resetTags() {
    const arr = this.profileForm.controls.nod_tags as FormArray;
    while (0 !== arr.length) {
      arr.removeAt(0);
}

这种方式效果很好。谢谢大家。

答案 4 :(得分:0)

从Angular 8开始,最好的方法是使用FormArray提供的clear()方法:

// Reset all tags (Angular 8+)
resetTags() {
  const nodTags = this.profileForm.get('nod_tags') as FormArray;

  if ( nodTags.length > 0 )
    nodTags.clear();
}

如果您使用的是Angular 7或更低版​​本,则Mizanur的版本适用。这是使用它的resetTags()方法的修改版本:

// Reset all tags (Angular 7 and below)
resetTags() {
  const nodTags = this.profileForm.get('nod_tags') as FormArray;

  while ( nodTags.length > 0 ) {
      nodTags.removeAt(0);
}

答案 5 :(得分:0)

有更简单的方法可以让 nod_tags 清空!

get nod_tagsArray() {
    return this.profileForm.controls.nod_tags as FormArray;
  }

    this.nod_tagsArray.controls =[];