我正在构建动态表单,如this .
我添加另一个 TextboxQuestion
,它需要一个数字输入 . 在提交时,将表单值转换为json为 JSON.stringify(this.form.value)
(如在 dynamic-form.component.ts
:onSubmit中)时,数值将被字符串化为字符串 .
我的意思是:
而不是这个(JSON):
{
"mynumber" : 0
}
我懂了:
{
"mynumber" : "0"
}
为了解决这个问题,__52621_我已经将控件放在一个循环中,该循环检查每个表单元素,如果其类型是这样,则将其值转换为整数 .
另一种解决方案是创建具有适当类型的ng模型,但由于表单是动态的,我无法为每种可能的表单创建接口/类 .
我敢打赌,使用JSON.stringify时,有更简单的解决方案来保持正确的类型 .
1 回答
这里的问题是输入的表单控件类型被定义为字符串,即使输入的类型为number . 要更新它,请确保为数字组件定义新的
controlType
.例如,您的
NumberQuestion
组件应类似于:定义
controlType
后,请确保在dynamic-form-question.component.html
模板下的switch语句中添加新选项:现在,表单的最终输出应类似于:
这是一个工作示例link .