Contrôle de formulaire valueChanges donne la valeur précédente

J'ai un contrôle de formulaire avec nom 'question1' à l'intérieur de la forme de l'objet parentForm et j'ai souscrites de la manière suivante.

Son un bouton radio avec deux options Yes et No, lorsque je sélectionne No - je obtenir Yes et lorsque je sélectionne Yes son un 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 a la valeur correcte, mais si je ne console.log(this.parentForm.value['question1'] il donne de la valeur précédente.

J'ai essayé de mettre un setTimeout() avant l'extraction de la valeur de this.parentForm.value['question1'], Il fonctionne très bien.

setTimeout(() => {
  console.log(this.parentForm.value['question1']); //gives the correct value.
}, 500);

Mais ma question est pourquoi parentForm n'est pas mis à jour lors de son contrôle les changements de la valeur et que je suis la récupération de sa valeur qu'après la valeur a été modifiée.

Remarque: je ne veux pas d'observer pour parentForm.valueChanges, pas mon exigence.

Donc, ce qui vous empêche d'utiliser selectedValue?
À l'aide de this.parentForm.value['question1'] je peux y accéder de n'importe où au sein de la composante. selectedValue n'a qu'une portée locale.

OriginalL'auteur Amit Chigadani | 2017-07-04