Formcontrolname未动态追加到angular中

Formcontrolname未动态追加到angular中,angular,Angular,Iam使用角度反应式表单,在html中通过绑定动态名称到formcontrolname的对象数组循环,当我检查输入上的表单控件名称时,它不会显示 当我通过在输入字段中输入值提交表单时,frmgrp.value带有空值, 请帮忙纠正这个问题 <form [formGroup]="frmGroup"> <div *ngFor="let form_elem of formtemplate"> <div [ngSwitchCa

Iam使用角度反应式表单,在html中通过绑定动态名称到formcontrolname的对象数组循环,当我检查输入上的表单控件名称时,它不会显示

当我通过在输入字段中输入值提交表单时,frmgrp.value带有空值, 请帮忙纠正这个问题

 <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之间没有空格