Angular FormGroup未从子FormGroup接收任何更改

Angular FormGroup未从子FormGroup接收任何更改,angular,forms,dynamic,angular-forms,Angular,Forms,Dynamic,Angular Forms,我有一个被动的Angular 11表单,它根据选择动态地构建附加控件。这些控件都是在父窗体内的同一FormGroup中添加的,并且是必需的,但是即使我填充了每个字段,父窗体仍然无效 模板如下所示: 模板 {{template}} 语言 {{语言}} 占位符 {{占位符}} 这就是成分(去除大多数行为以保持示例最小和可复制): 公共电子邮件表单!:FormGroup; 公共模板名=[“一”、“二”、“三”]; 公共模板语言=[“en”、“pt”、“de”]; 公共模板占位符:字符串[]=[];

我有一个被动的Angular 11表单,它根据选择动态地构建附加控件。这些控件都是在父窗体内的同一FormGroup中添加的,并且是必需的,但是即使我填充了每个字段,父窗体仍然无效

模板如下所示:


模板
{{template}}
语言
{{语言}}
占位符

{{占位符}}
这就是成分(去除大多数行为以保持示例最小和可复制):

公共电子邮件表单!:FormGroup;
公共模板名=[“一”、“二”、“三”];
公共模板语言=[“en”、“pt”、“de”];
公共模板占位符:字符串[]=[];
ngOnInit():void{
this.emailForm=新表单组({
模板:新建FormControl(),
语言:new FormControl(),
占位符:新表单组({}),
},验证器。必填);
这个。populatePlaceholders();
}
populatePlaceholders():void{
常量占位符:字符串[]=[];
//一些API调用。。。
// ...
常量占位符字段:记录={};
占位符。forEach((占位符)=>{
占位符字段[占位符]=新表单控件(“,验证器。必填);
this.templatePlaceholders.push(占位符);
});
this.emailForm.setControl(“占位符”,新表单组(占位符字段));
}
问题是,即使我填写了每个字段,即使根本没有占位符字段,提交按钮仍然处于禁用状态。我尝试在
valueChanges
上记录
emailForm.placoholders
的状态,我可以看到它保持不变(如果我在字段中输入任何内容,该值不会显示在其控件中),如果我在子字段中输入任何内容,甚至不会触发
valueChanges
事件,仅当它位于一级控件中时

我是个新手,所以我一定是做错了什么,但是什么

编辑:一场代码闪电战:

我发现了问题:我忘记将
formControlName
属性添加到模板中的控件。我添加了
formControlName=“{{placeholder}}”
,问题就解决了

我希望像这样容易忘记的事情有一个明显的错误;调试起来真的很难