要动态地将值分配给FormArray控件,您可以使用setValue或patchValue方法。以下是一个使用Angular 7的示例代码:
首先,创建一个名为AppComponent的组件,并在其模板中使用formGroup和formArrayName指令来创建一个包含FormArray的表单。
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, FormArray } from '@angular/forms';
@Component({
selector: 'app-root',
template: `
`,
})
export class AppComponent implements OnInit {
myForm: FormGroup;
constructor(private fb: FormBuilder) {}
ngOnInit() {
this.myForm = this.fb.group({
items: this.fb.array([])
});
}
get items(): FormArray {
return this.myForm.get('items') as FormArray;
}
addNewInput() {
this.items.push(this.fb.control(''));
}
setValue() {
const newValues = ['Value 1', 'Value 2', 'Value 3'];
this.myForm.setControl('items', this.fb.array(newValues.map(val => this.fb.control(val))));
}
}
在上述代码中,我们使用Angular的FormBuilder来创建一个名为myForm的FormGroup,其中包含一个名为items的FormArray。
我们通过items方法来获取FormArray控件,以便我们可以在模板中使用它。
在ngOnInit方法中,我们初始化myForm并将其与组件的模板绑定。
在addNewInput方法中,我们通过调用items.push方法将新输入的FormControl添加到FormArray中。
在setValue方法中,我们使用setControl方法将新的FormArray设置为myForm的items控件。我们使用数组值来创建新的FormArray,并使用map方法将每个值转换为FormControl。
您可以在模板中添加按钮,以便在单击按钮时调用addNewInput和setValue方法。
请注意,您需要在模块中导入ReactiveFormsModule,并在组件的构造函数中注入FormBuilder。
希望这可以帮助您动态地将值分配给FormArray控件。