Formcontrolname未动态追加到angular中
Iam使用角度反应式表单,在html中通过绑定动态名称到formcontrolname的对象数组循环,当我检查输入上的表单控件名称时,它不会显示 当我通过在输入字段中输入值提交表单时,frmgrp.value带有空值, 请帮忙纠正这个问题Formcontrolname未动态追加到angular中,angular,Angular,Iam使用角度反应式表单,在html中通过绑定动态名称到formcontrolname的对象数组循环,当我检查输入上的表单控件名称时,它不会显示 当我通过在输入字段中输入值提交表单时,frmgrp.value带有空值, 请帮忙纠正这个问题 <form [formGroup]="frmGroup"> <div *ngFor="let form_elem of formtemplate"> <div [ngSwitchCa
<form [formGroup]="frmGroup">
<div *ngFor="let form_elem of formtemplate">
<div [ngSwitchCase]="form_elem.keyType">
<div *ngSwitchCase="'TEXTBOX'">
<div class="col-lg-4">
<label for="{{form_elem.keyName}}" class="col-form-label">
{form_elem.keyName}}</label>
<input type="text" class="form-control" autocomplete="off"
formControlName="form_elem.keyName"
id="{{form_elem.keyName}}">
</div>
</div>
</form>
if(this.formtemplate.length>0){
this.formtemplate.forEach((val:any) => {
val.keyName=val.keyName.replace(/\s/g, "");
});
this.formtemplate.forEach((val:any)=>{
group[val.keyName]=new FormControl('');
});
group['id']=new FormControl('');
this.frmGroup = this.fb.group({group})
this.frmGroup.controls=this.frmGroup.controls.group.value;
}
{form_elem.keyName}
if(this.formtemplate.length>0){
this.formtemplate.forEach((val:any)=>{
val.keyName=val.keyName.replace(/\s/g,“”);
});
this.formtemplate.forEach((val:any)=>{
组[val.keyName]=新表单控件(“”);
});
组['id']=新表单控件('');
this.frmGroup=this.fb.group({group})
this.frmGroup.controls=this.frmGroup.controls.group.value;
}
您有很多错误,我甚至不知道您的模板将如何编译。ngSwitch执行错误,标签上缺少一个{
,绑定变量时formControlName=“form\u elem.keyName”
应该是[formControlName]=“form\u elem.keyName”
TS看起来不错,最大的禁忌就在这里:
this.frmGroup.controls = this.frmGroup.controls.group.value;
您正在为formgroup分配一个常规javascript对象。您不能这样做,因为它们不是表单控件,只是一个简单的javascript对象
group
似乎保存了所有表单控件,因此您可以使用spread操作符将它们添加到表单中……现在您有了一个带有表单控件的表单组。但是您确实不需要group
,只需将控件直接添加到表单组中即可
考虑到我提到的所有内容,您的代码应该如下所示:
构造函数(私有fb:FormBuilder){
if(this.formtemplate.length){
this.frmGroup=this.fb.group({})
this.formtemplate.forEach((val:any)=>{
this.frmGroup.addControl(val.keyName,this.fb.control(“”));
})
}
}
模板:
{{form_elem.keyName}}
另外,不要使用任何。键入您的数据,我们正在使用键入脚本;)
A供您参考请将代码作为代码块更新您的问题,而不是写评论。@Akhil,如果您使用“绑定”[
]
使引号之间的部分表示变量的值。因此@Eliseo我应该如何更改formcontrolname以获得动态值,我更改了该值,如formcontrolname=“{{form_elem.keyName}}”,但它仍然不起作用我不知道您的frmGroup或formtemplate(确保没有类型错误-在代码中有表单模板
和表单组
(中间有空格,确保需要删除空格)。顺便说一句,写{{frmGroup?.value}{json}{{formTemplate}
在.html中查看variableSorry@eliso的值,我在这里犯了错误,但formgroup和form template之间没有空格