Angular 角度:如何将FormGroup.value转换为贴图?
我有一个FormGroup,它有几个FormControls,每个FormControls使用一个字符串作为名称,一个object(Answer)作为值 我试图将formgroup的值直接强制转换到一个映射,但结果是它没有定义 e、 gAngular 角度:如何将FormGroup.value转换为贴图?,angular,dictionary,formgroups,Angular,Dictionary,Formgroups,我有一个FormGroup,它有几个FormControls,每个FormControls使用一个字符串作为名称,一个object(Answer)作为值 我试图将formgroup的值直接强制转换到一个映射,但结果是它没有定义 e、 g const formDataMap:Map=this.form.value作为Map; 获得此信息的唯一方法如下: const formDataMap: Map<String, Answer> = new Map<String, Answer
const formDataMap:Map=this.form.value作为Map;
获得此信息的唯一方法如下:
const formDataMap: Map<String, Answer> = new Map<String, Answer>();
Object.keys(formData).forEach((key) => {
formDataMap.set(key, formData[key] as Answer);
});
const formDataMap:Map=newmap();
Object.keys(formData).forEach((key)=>{
formDataMap.set(键,formData[key]作为答案);
});
这不应该是从表单到映射的自然转换吗?typescript中的
as
操作符只定义该属性的类型。它不会将项目推送到地图上。因此,您需要循环浏览属性并手动将它们推送到地图上,就像您所做的那样。好的,因此无法自动获取这些属性。如果是这样,那么用于存储表单(键、值)对的幕后数据结构是什么?我读过关于数组数组的文章,但是什么是正确的类型声明?@JohnBlack你是在问映射的类型声明还是FormGroup的类型声明(你的formData存储在组件中)我指的是表单的类型。value@JohnBlack如果您使用console.log form.value,您可以看到它只是一个对象{key:value}
,因此,类型类似于{[key:string]:any}
const formDataMap: Map<String, Answer> = new Map<String, Answer>();
Object.keys(formData).forEach((key) => {
formDataMap.set(key, formData[key] as Answer);
});