Angular 嵌套表单数组问题:错误:找不到路径为&x27;问题->;0->;代码';

Angular 嵌套表单数组问题:错误:找不到路径为&x27;问题->;0->;代码';,angular,angular-reactive-forms,Angular,Angular Reactive Forms,我正在寻求帮助 ERROR Error: Cannot find control with path: 'questions -> 0 -> code' 错误,我一直从该代码进入控制台。我咨询了StackOverflow并更改了一些内容,但错误占了上风 我的Typescript文件如下所示 导出类SurveyBuilderPageComponent{ @输入() 获取调查(){ 把这个还给我 } 设置测量(值:测量){ 这项调查=价值 常量测量:测量=值| |{ id:null,

我正在寻求帮助

ERROR Error: Cannot find control with path: 'questions -> 0 -> code'
错误,我一直从该代码进入控制台。我咨询了StackOverflow并更改了一些内容,但错误占了上风

我的Typescript文件如下所示

导出类SurveyBuilderPageComponent{
@输入()
获取调查(){
把这个还给我
}
设置测量(值:测量){
这项调查=价值
常量测量:测量=值| |{
id:null,
标题:“”,
副标题:“”,
问题:[
{
代码:“”,
类别:“”,
标题:“”,
文本:“”,
类型:“”,
日期:'',
},
],
}
this.form=this.formBuilder.group({
标题:[survey.title,Validators.required],
副标题:[survey.subtitle,Validators.required],
问题:this.formBuilder.array(
调查.问题.地图((问题)=>
此为.formBuilder.group({
代码:[问题.代码],
类别:[问题.类别,验证器.必填],
标题:[问题.标题],
text:[question.text,Validators.required],
类型:[问题.类型],
日期:[问题日期],
})
)
),
})
}
@Output()save=neweventemitter()
_调查:调查
建造师(
私有formBuilder:formBuilder,
私人调查服务:调查服务,
专用路由器
) {}
表格:表格组
私有newQuestionFormGroup():FormGroup{
返回此.formBuilder.group({
标题:['',验证器。必填],
文本:['',验证器。必需],
类别:['',验证器。必需],
})
}
提交(){
if(this.form.valid){
这个.save.emit(
这是我的调查
?{…this.form.value,id:this.survey.id}
:this.form.value
)
}
}
handleAddNewQuestion(){
const questions=this.form.get('questions')作为FormArray
this.insertQuestion(questions.controls.length)
}
私人插入问题(索引:编号){
const questions=this.form.get('questions')作为FormArray
insert(索引,this.newQuestionFormGroup())
}
获取问题():AbstractControl[]{
返回(this.form.get('questions')作为FormArray.controls
}
HandleDelete问题(索引:编号){
const questions=this.form.get('questions')作为FormArray
问题.删除(索引)
}
handleInsertAfterQuestion(事件:事件,索引:编号){
event.stopPropagation()
此.insertQuestion(索引+1)
}
handleInsertBeforeQuestion(事件:事件,索引:编号){
event.stopPropagation()
此.insertQuestion(索引)
}
}
我的HTML文件


调查详情
问题
后加
问题{{idx+1}
在前面导航
导航到下一个
删除
最终用户
订婚
基础
障碍
产品
缩放比例
团队
技术的
新问题
提交
回购协议在下面的链接中


解决此类错误的最简单方法是遵循错误

找不到路径为“问题->0->代码”的控件

问题-格式阵列
0->formGroup
代码->表单控件

您的html结构应该反映这一点 将
更改为

尝试添加新问题时遇到的下一个错误是

找不到路径为“问题->1->code”的控件

注意“1”

这意味着表单数组正在工作,唯一的问题是表单控件
code

如果查看您的
newQuestionFormGroup()
code
缺失

 private newQuestionFormGroup(): FormGroup {
    return this.formBuilder.group({
      title: ["", Validators.required],
      text: ["", Validators.required],
      category: ["", Validators.required]
    });
  }
只需添加
code
,该功能即可工作


有了上述结构,现在就满足了,代码应该可以工作了。解决这种错误的最简单方法就是跟踪错误

找不到路径为“问题->0->代码”的控件

问题-格式阵列
0->formGroup
代码->表单控件

您的html结构应该反映这一点 将
更改为

尝试添加新问题时遇到的下一个错误是

找不到路径为“问题->1->code”的控件

注意“1”

这意味着表单数组正在工作,唯一的问题是表单控件
code

如果查看您的
newQuestionFormGroup()
code
缺失

 private newQuestionFormGroup(): FormGroup {
    return this.formBuilder.group({
      title: ["", Validators.required],
      text: ["", Validators.required],
      category: ["", Validators.required]
    });
  }
只需添加
code
,该功能即可工作


有了上面的结构,现在就满足了,代码应该可以工作了

问题是一个数组。您应该使用FormArray名称,而不是FormGroupName我相信我确实定义了FormArray。很抱歉,没有遵循…由于链接提供了您的代码,请在上面共享您的代码,这样,如果由于某种原因链接被破坏,那么信息仍然可以在上获得。如果您在使用formArray时出错,您将使用
//因此阻止我在中添加代码段。说代码太多,建议我链接到回购协议。相信我,我试过了。J现在就开始执行StackBlitz