I have a form control with name 'question1' within the form object parentForm and I have subscribed to it in the following way.
Its a radio button with two options Yes and No, when I select No I get Yes and when I select Yes its a No.
this.parentForm.controls['question1'].valueChanges.subscribe(
(selectedValue) => {
// If option `No is selected`
console.log(selectedValue); // displays No. OK
console.log(this.parentForm.value['question1']); // displays Yes. Problem is here
}
);
selectedValue variable has the correct value but if I do console.log(this.parentForm.value['question1'] it gives the previous value.
I tried to put a setTimeout() before retrieving value from this.parentForm.value['question1'], It just works fine.
setTimeout(() => {
console.log(this.parentForm.value['question1']); // gives the correct value.
}, 500);
But my question is why parentForm is not updated when its control's value changes and that too I am retrieving its value only after value was changed.
Note: I don't want to observe for parentForm.valueChanges, not my requirement.