【发布时间】:2021-05-06 14:45:10
【问题描述】:
我试图通过循环生成一个表单组,所以我有一些输入,并基于它创建一个带有嵌套组的表单。我的想法是这样的:
public transactionOrRefundRequestForm: FormGroup = new FormGroup({});
this.transactionOrRefundRequestForm.addControl('SaleToPos', new FormGroup(
this.generateForm(this.formStructure)
));
public generateForm(formEntry: FormEntry[] | null | undefined): any {
formEntry.forEach(fe => {
console.log(fe);
console.log(this.transactionOrRefundRequestForm.controls);
if (fe instanceof FormCategory) {
const fc = fe as FormCategory;
return {fc.name : new FormGroup(this.generateForm(fc.entries))};
}
if (fe instanceof FormInput || FormInputSelect || FormInputBoolean) {
const fi = fe as FormInput;
return {fi.name: new FormControl('')};
}
});
}
所以当我得到输入时,它会循环遍历它,如果是输入,它将返回新的 formControl,但如果是类别,它将返回新的 FormGroup,其子项将被函数再次循环。
现在我的结果是一个空表单,但我不确定我做错了什么。
这是一个堆栈闪电战:https://stackblitz.com/edit/angular-ivy-nqndkq?file=src/app/app.component.ts
它会为没有构造函数的类抛出错误,但对我来说它工作得很好。太糟糕了,我不知道该怎么办,抱歉。
【问题讨论】:
-
你能在这里分享 stackblitz 链接吗?并在那里添加代码
-
您的代码存在编译问题,并且您同时询问多个问题,请改进您的问题以获得更好的答案
-
@MauricioGraciaGutierrez 是的,它有编译问题,但它们没有意义,因为它要求一个构造函数,即使有一个也很困难。此外,我看不出我在哪里同时询问多个问题,但无论哪种方式,我都会尝试改进它。
-
那个“构造函数错误”是因为在
app.component.ts的第164行创建新的class FormEntry之前没有关闭上一个类,这是我建议你分开的原因之一每个类的文件。