Reactive Form:能否用单个formGroupName/formControlName指令访问多层表单?
在Angular响应式表单中直接访问多层嵌套控件的问题
不行,默认的formControlName和formGroupName指令不支持直接传入像names.firstName这种多层嵌套的路径。这两个指令是基于当前父级FormGroup/FormArray的上下文来解析控件名的,只能识别当前层级的字段,没法跨层级直接定位。
如果不想在外层添加formGroupName="names"的容器,有个简单的替代方案:用formControl指令直接绑定到深层控件,具体写法如下:
首先修正你代码里的语法错误(原代码中names = new FormGroup应改为names: new FormGroup):
profileForm = new FormGroup({ names: new FormGroup({ firstName: new FormControl(''), lastName: new FormControl('') }) });
然后在模板里直接绑定深层控件:
<input type="text" [formControl]="profileForm.get('names.firstName')">
如果坚持要用formControlName,那必须遵循表单的嵌套结构编写模板,外层得套对应formGroupName的容器,因为formControlName只能在当前父FormGroup的上下文里查找控件。
内容的提问来源于stack exchange,提问作者JensK
相关产品推荐
相关产品推荐

