Reputation: 35
emailData.contractors = [
0: {
id: 1,
email: asd@asd
}
1: {
id: 1,
email: asd@asd
}
]
emailSub(event, data) {
const trigger = $(event.target);
this.emailData.contractors.forEach((v, i) => {
if (v.id == data.id) {
this.emailData.contractors[0]['subject'] = trigger.val();
}
});
}
Expected Output
0: {
id: 1,
email: asd@asd
subject: 'sdf'
}
1: {
id: 1,
email: asd@asd`enter code here`
}
]
How can i achive this in angular 8. the function above is not working on a keyup of an input from which i get the data
Upvotes: 1
Views: 989
Reputation: 22213
Use Object.assign
to add an property.
Try like this:
emailSub(event, data) {
const trigger = $(event.target);
let item = this.emailData.contractors.find(x => x.id == data.id);
Object.assign(item, {'subject':trigger.val()})
}
Upvotes: 1
Reputation: 4054
change your data to
emailData.contractors = [
{
id: 1,
email: "asd@asd"
},
{
id: 2,
email: "asd@asd"
}
]
Or
emailData.contractors = {
0: {
id: 1,
email: "asd@asd"
},
1: {
id: 2,
email: "asd@asd"
}
}
Upvotes: 0