FormGroup 数组 Angular
Array of FormGroup Angular
我正在尝试在 Formgroup 中创建一个 FormGroup 数组,但我似乎无法让它工作
ngOnInit(): void {
this.surveyForm = new FormGroup({
'surveyTitle': new FormControl(null, Validators.required),
'surveyDescription': new FormControl(null),
'questionsDetail': new FormGroup(
{
'questionType' : new FormControl('mcq'),
'question': new FormControl(null),
'choices': new FormArray([])
}),
});
我希望将 questionsDetail 做成一个数组,这样我就可以在 1 个调查中有多个 questionsDetail。
我的问题是如何将我的 questionsDetails 初始化为 FromGroup 的数组,以便每次按下下一步按钮时,它都会将当前值推送到我的 questionDetails?
所以每次我提交表单时,它都在这个模型中
surveyForm = {
surveyTitle: string,
surveyDescription: string,
questionsDetails: [{
questionType: string
question: string
choices: string[]
}]
}
您可以尝试为此使用 FormBuilder。这是一个如何使用 FormBuilder 创建数组的示例:
formExample: FormGroup;
constructor(private formBuilder: FormBuilder) {}
ngOnInit(): void {
this.formExample = this.formBuilder.group({
item1: new FormControl(),
item2: new FormControl(),
itemArray: this.formBuilder.array([
this.formBuilder.group({
arrayItem1: new FormControl(),
arrayItem2: new FormControl()
})])
});
}
我正在尝试在 Formgroup 中创建一个 FormGroup 数组,但我似乎无法让它工作
ngOnInit(): void {
this.surveyForm = new FormGroup({
'surveyTitle': new FormControl(null, Validators.required),
'surveyDescription': new FormControl(null),
'questionsDetail': new FormGroup(
{
'questionType' : new FormControl('mcq'),
'question': new FormControl(null),
'choices': new FormArray([])
}),
});
我希望将 questionsDetail 做成一个数组,这样我就可以在 1 个调查中有多个 questionsDetail。
我的问题是如何将我的 questionsDetails 初始化为 FromGroup 的数组,以便每次按下下一步按钮时,它都会将当前值推送到我的 questionDetails?
所以每次我提交表单时,它都在这个模型中
surveyForm = {
surveyTitle: string,
surveyDescription: string,
questionsDetails: [{
questionType: string
question: string
choices: string[]
}]
}
您可以尝试为此使用 FormBuilder。这是一个如何使用 FormBuilder 创建数组的示例:
formExample: FormGroup;
constructor(private formBuilder: FormBuilder) {}
ngOnInit(): void {
this.formExample = this.formBuilder.group({
item1: new FormControl(),
item2: new FormControl(),
itemArray: this.formBuilder.array([
this.formBuilder.group({
arrayItem1: new FormControl(),
arrayItem2: new FormControl()
})])
});
}