How to push the roles form data value to createUserForm data value so that they will become 1 object ?
#The final result should look like this
{ "emailAddress": "asdasdas@gmail.com", "firstName": "sdsfd", "lastName": "fsdfsdf", "phoneNumber": "21324", "companyName": "sdfsdf", "title": "CEO", "roleId": 7, "associatedAccount": "WALLS", "accountId": 4, "roles": [ { "id": 12, "name": "Architect", "isShow": true, "transactionRoleId": 12 }, { "id": 11, "name": "Construction Project Director", "isShow": true, "transactionRoleId": 11 }, { "id": 9, "name": "COVP", "isShow": true, "transactionRoleId": 9 } ] }
This is the data from roles when I submit
{ "id": 12, "name": "Architect", "isShow": true, "transactionRoleId": 12 }
This is the data from createUserForm when I submit
{ "emailAddress": "adasd", "firstName": "asdasdasd", "lastName": "asdasd", "phoneNumber": "2132", "companyName": "adasdas", "title": "dasdasdas", "roleId": 7, "associatedAccount": "test", "accountId": 4 }
—>>> another form
roles = new FormControl();
—>>>> User Form
createUserForm = new FormGroup({ emailAddress: new FormControl(), firstName: new FormControl(), lastName: new FormControl(), phoneNumber: new FormControl(), companyName: new FormControl(), title: new FormControl(), roleId: new FormControl(), associatedAccount: new FormControl(), accountId: new FormControl(), });
—>>> what i tried
saveUser() { this.createUserForm.get('roleId').setValue(7); console.log("this.createUserForm.value" , this.createUserForm.value) console.log("data" ,this.roles.value) console.log("finaldata : " , this.createUserForm.value.push(this.roles.value))
Advertisement
Answer
You can achieve this by using angular reactive form try this out.
import { FormArray, FormBuilder, FormGroup } from '@angular/forms'; form: FormGroup; constructor(private _fb: FormBuilder) {} this.form = this._fb.group({ firstName: [], emailAddress: [], ... roles: this._fb.array([]) // create a role form field as an array });
You can call a method to add role object to form array
addRole(): void { const roles = this.form.get('roles') as FormArray; roles.push( this._fb.group({ id: [], name: [], isShow: [], transactionRoleId: [] }) ); console.log(this.form.value); }
Or can remove the added role by its index
removeRole(index: number): void { const roles = this.form.get('roles') as FormArray; roles.removeAt(index); }