Angular 15中用Renderer2构建动态表单提交值为空求助
问题分析与解决方案
核心问题:控件名称不匹配
你在isNumber方法中调用renderInput时,错误传入固定字符串'nomPdd'作为第一个参数,导致生成的输入框formControlName属性值为nomPdd,但你在queryForm中添加的控件名称是实际的nomParam(比如id_usuario)。两者名称不匹配,Angular无法将输入框的值与FormControl绑定,所以提交时所有控件值都是空的。
修正代码
把isNumber方法中的renderInput调用参数替换为实际的nomParam:
isNumber(nomParam: string) { this.renderInput(nomParam, 'number') // 将'nomPdd'改为nomParam this.queryForm.addControl( nomParam, new FormControl('', [Validators.required]) ); }
同时检查其他类型处理方法(isSucursal、isVarchar、isDate),确保它们调用renderInput时也传入正确的nomParam,而非固定字符串。
额外注意事项
- 确保承载动态表单的容器外层有正确绑定FormGroup的
<form>标签:
<form [formGroup]="queryForm" (ngSubmit)="onSubmit()"> <div #formulario></div> <button type="submit">提交</button> </form>
- 动态创建输入框时,确保
formControlName和queryForm中添加的控件名称完全一致(Angular的FormControl名称区分大小写)。
内容的提问来源于stack exchange,提问作者Eduardo Mancilla
相关产品推荐
相关产品推荐

