Angular 角度:如何将FormGroup.value转换为贴图?

Angular 角度:如何将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

我有一个FormGroup,它有几个FormControls,每个FormControls使用一个字符串作为名称,一个object(Answer)作为值

我试图将formgroup的值直接强制转换到一个映射,但结果是它没有定义

e、 g

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); 
});