动态addControl到formgroup Angular 5

joe*_*ith 50 angular

尝试在Angular中向formGroup动态添加一个新的formControl条目.

method() {
  this.testForm.addControl('new', ('', Validators.required));
}
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

小智 102

当然,但第二个参数应该是FormControl实例.就像是:

this.testForm.addControl('new', new FormControl('', Validators.required));
Run Code Online (Sandbox Code Playgroud)

如果需要,还可以使用'setValidators'方法动态添加验证器.

信息在这里:https://angular.io/api/forms/FormGroup#addControl


AJT*_*T82 19

如果要FormBuilder用于表单,则还可以使用它来添加控件:

constructor(private fb: FormBuilder) { }

method() {
  this.testForm.addControl('new', this.fb.control('', Validators.required));
}
Run Code Online (Sandbox Code Playgroud)


小智 6

简单使用:

  this.testForm.addControl('new', this.fb.group({
      name: ['', Validators.required]
    }));
Run Code Online (Sandbox Code Playgroud)


Car*_*rrm 5

Angular 14 添加了表单输入功能。新语法如下:

表格申报

public form = new FormGroup<{ new?: FormControl<string | null> }>();
Run Code Online (Sandbox Code Playgroud)

请注意,该new控件必须声明为可选。addControl如果未首先声明该字段,您将无法使用。

对于更大的表单,您可以使用接口:

interface MyForm {
    field1: FormControl<string | null>;
    field2: FormControl<string | null>;
    new?: FormControl<string | null>;
}

public form = new FormGroup<MyForm>({
    field1: new FormControl<string | null>('', Validators.required),
    field2: new FormControl<string | null>('', Validators.required),
});
Run Code Online (Sandbox Code Playgroud)

向表单添加控件

this.form.addControl('new', new FormControl<string | null>('', Validators.required));
Run Code Online (Sandbox Code Playgroud)