如何在 angular 9 中制作动态表

how to make dynamic tables in angular 9

我知道如何在 angular 9.

中创建表格
    import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
    this.form = this.fb.group({
       name: [null, [Validators.required]],
       description: [null, []],
       length: [0, [Validators.required]],
       precision: [0, [Validators.required]],
       type: [0, [Validators.required]],
    });

上面的代码可以生成如下所示的简单表单

现在想做一个动态的表格,由上面简单表格的多行组成。所以用户可以添加/删除一行简单的表格。

我认为需要在angular中的FormBuilderclass中应用addControl和removeControl等方法,但具体如何实现

您的 FormGroup 应该包含一个 FormArray 并且在这个中,您必须按照您的描述添加控件。

因此,首先您必须像这样更改您的表单声明:

this.form = this.formBuilder.group({
    entries: this.formBuilder.array([]);
 });

通过这种方式,您将能够add/remove控制。

您可以定义一个方法,它将 return 您类型的 FormGroup

createFormGroup(): FormGroup {
  return new FormGroup({
       name: [null, [Validators.required]],
       description: [null, []],
       length: [0, [Validators.required]],
       precision: [0, [Validators.required]],
       type: [0, [Validators.required]],
   })
}

然后你必须定义一些方法来 add/remove a FormGroup to/from FormArray:

addFormGroup(): void {
   this.formEntries.push(this.createFormGroup());
}

deleteFormGroup(index: number): void {
   this.formEntries.removeAt(index);
}

get formEntries(): FormArray {
   return this.form.controls.entries as FormArray;
}

HTML 中,您必须列出 FormArray[=34= 中的每个 FormGroup ]:

<button (click)="addFormGroup()"> ADD </button>

<form [formGroup]="form">
   <div formArrayName="entries">
      <div *ngFor="let entry of formEntries.controls; let i = index" [formGroupName]="i">
        <!-- add each FormControl -->

        <button (click)="deleteFormGroup(i)"> DELETE </button>
      </div>
   </div>
</form>