Comment désactiver le contrôle de formulaire, mais garder de la valeur

J'ai une forme réactive. Sur edit, je veux un contrôle désactivé.

Le ci-dessous fonctionne:

   this.myForm.controls['analysis_horizon'].disable();

Toutefois, la clé analysis_horizon n'est plus dans mon myForm.la valeur de hachage.

Comment puis-je désactiver un champ avec une forme réactive, mais en gardant la valeur sous la forme de valeurs de hachage?

J'ai essayé [désactivé]= mais j'ai l'-dessous:

It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true
      when you set up this control in your component class, the disabled attribute will actually be set in the DOM for
      you. We recommend using this approach to avoid 'changed after checked' errors.

      Example: 
      form = new FormGroup({
        first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),
        last: new FormControl('Drew', Validators.required)
      });

De charger des données à partir de ma base de données sur modifier dans les contrôles de formulaire, mais j'ai besoin d'un champ pour ne pas être autorisé à changer.

  • il vous dit d'utiliser désactivé attribut directement dans le HTML, plutôt que de l'utiliser avec formcontrol.
  • Étant donné que c'est de ne pas changer, vous pouvez le mettre dans la valeur vous-même pour ce qui est de la consommer, avec Object.assign ou quelque chose.
  • Peut-être que je suis malentendu, mais, pourquoi ne pas faire comme le message l'indique, yourFormControl: new FormControl({value: yourPresetValue, disabled: true})
  • Double Possible de Angulaire 2 désactivé les contrôles ne sont pas inclus dans le formulaire.valeur
  • Je sais que c'est vieux maintenant, mais les formes réactives a une autre méthode qui est appelée forme.getRawValue (), pour ce faire, pour vous je ne peux pas dire que cela fonctionne 100% du temps, mais il fonctionne lorsque vous utilisez l'un des setValue ou le correctif de Valeur méthodes d'
InformationsquelleAutor Tampa | 2017-02-11