如何销毁基于属性 名称需要映射值的对象数组
How to destructing the array of object based on property name need to map the value
我有以下指定的服务器响应格式,我需要将基于字段名的值映射到表单控件名称。
let userForm= ths.formbuilder.group({
firstName:[],
lastName:[],userName:[],
});
我需要从服务中解构以下响应,
这里我得到了基于 属性 的精确值,但我需要为每个 属性
做
let firstName= this.form.find(
items=> items.fieldName === 'firstName').fieldValue
let getUserName = this.form.find(items=>items.userName ==='userName').value
console.log(firstName,getUserName,'test');
}
服务响应需要根据字段名映射形成控制模型。
form:any =[
{
fieldName: 'firstName',
fieldValue: 'johns smith',
isVisible: true,
isValidationEnabled: true
},
{
fieldName: 'userName',
fieldValue: 'admins',
isVisible: true,
isValidationEnabled: true
},
{
fieldName: 'documentType',
fieldValue: 'Invoice',
isVisible: true,
isValidationEnabled: true
}
];
谁能提供更好的解决方案
就写个函数把它转成对象?
function formArrayToObject(formArray: {fieldName: string, fieldValue: string}[]) {
return formArray.reduce((acc, val) => {
return Object.assign(acc, {[val.fieldName]: val.fieldValue});
}, {});
}
在您的数组上调用它,您将拥有一个可以根据需要访问的键值对象。或者您可以根据需要在表单上调用 reset
或 setValue
或 patchValue
:
this.userForm.reset(formArrayToObject(this.form))
我有以下指定的服务器响应格式,我需要将基于字段名的值映射到表单控件名称。
let userForm= ths.formbuilder.group({
firstName:[],
lastName:[],userName:[],
});
我需要从服务中解构以下响应,
这里我得到了基于 属性 的精确值,但我需要为每个 属性
做let firstName= this.form.find(
items=> items.fieldName === 'firstName').fieldValue
let getUserName = this.form.find(items=>items.userName ==='userName').value
console.log(firstName,getUserName,'test');
}
服务响应需要根据字段名映射形成控制模型。
form:any =[
{
fieldName: 'firstName',
fieldValue: 'johns smith',
isVisible: true,
isValidationEnabled: true
},
{
fieldName: 'userName',
fieldValue: 'admins',
isVisible: true,
isValidationEnabled: true
},
{
fieldName: 'documentType',
fieldValue: 'Invoice',
isVisible: true,
isValidationEnabled: true
}
];
谁能提供更好的解决方案
就写个函数把它转成对象?
function formArrayToObject(formArray: {fieldName: string, fieldValue: string}[]) {
return formArray.reduce((acc, val) => {
return Object.assign(acc, {[val.fieldName]: val.fieldValue});
}, {});
}
在您的数组上调用它,您将拥有一个可以根据需要访问的键值对象。或者您可以根据需要在表单上调用 reset
或 setValue
或 patchValue
:
this.userForm.reset(formArrayToObject(this.form))