Ionic3/Erreur Angulaire: Devez fournir une valeur pour le contrôle de formulaire avec nom: 'jobStatus'
J'ai un Formulaire Modal avec le code suivant dans le modèle de balisage
<form [formGroup]="modalFG">
...
<ion-item *ngIf="isChangeStatus()">
<ion-select formControlName="jobStatus"
(ionChange)="jobStatusChangeHandler($event)">
<ion-option value=4>Success</ion-option>
<ion-option value=5>Failure</ion-option>
<ion-option value=6>Terminated</ion-option>
<ion-option value=8>Inactive</ion-option>
</ion-select>
</ion-item>
</form>
Dans le Tapuscrit j'ai spécifié une valeur, mais je ne peux pas sortir de cette erreur.
Erreur: Devez fournir une valeur pour le contrôle de formulaire avec nom: 'jobStatus'.
Quelqu'un peut me dire ce que je fais mal?
...
private modalFG:FormGroup;
private jobStatus:number;
constructor(
private navParams:NavParams,
private view:ViewController,
private fb: FormBuilder,
...
) {
this.changeStatus = false;
this.modalFG = fb.group({
comment: ['', Validators.required],
jobStatus: this.jobStatus
});
}
private ionViewWillLoad():void {
const data = this.navParams.get('data');
this.modalFG.setValue({'jobStatus': this.jobStatus});
}
private jobStatusChangeHandler(ev:any) {
console.log(ev);
}
private isChangeStatus():boolean {
return this.changeStatus;
}
J'ai aussi gestionnaire de bouton pour soumettre, avec le présent:
this.exitData.jobStatus = this.modalFG.get('jobStatus').value;
this.view.dismiss(this.exitData);
C'est le message d'erreur complet:
Error: Must supply a value for form control with name: 'jobStatus'.
at http://localhost:8100/build/vendor.js:22102:23
at http://localhost:8100/build/vendor.js:22026:66
at Array.forEach (<anonymous>)
at FormGroup._forEachChild (http://localhost:8100/build/vendor.js:22026:36)
at FormGroup._checkAllValuesPresent (http://localhost:8100/build/vendor.js:22100:14)
at FormGroup.setValue (http://localhost:8100/build/vendor.js:21907:14)
at ModalPage.webpackJsonp.124.ModalPage.ionViewWillLoad (http://localhost:8100/build/main.js:648:22)
at ModalImpl.ViewController._lifecycle (http://localhost:8100/build/vendor.js:17471:33)
at ModalImpl.ViewController._willLoad (http://localhost:8100/build/vendor.js:17331:14)
at OverlayPortal.NavControllerBase._willLoad (http://localhost:8100/build/vendor.js:44112:18)
Car il dit ionViewWillLoad dans la pile d'appel, l'erreur doit être quelque chose dans cet article autant que je sache!
Vous devez vous connecter pour publier un commentaire.
Mon problème était que je n'étais pas fournir toute forme de contrôle valeurs. Par exemple:
Dans ce cas, si vous essayez d'utiliser la méthode
setValue
et ne fournissent pas toutes les controll valeurs, comme ceci:il lèvera une erreur.
Solution
Utiliser
setValue
et apporter de la valeur pour tous les contrôles de formulaire:ou, si vous avez vraiment l'intention de mettre les valeurs partielles, l'utilisation
patchValue
méthode:Droit...
J'ai eu un formulaire utilisé pour n'ont qu'une seule forme de contrôle, appelé "commentaire".
Quand j'ai ajouté un deuxième, à condition d'élément de formulaire, la syntaxe, vous devez utiliser les changements de setValue...
J'avais besoin de le modifier de quelque chose comme ceci:
à:
parce que j'avais maintenant deux champs du formulaire...
Puis tout est tombé en place et le message trompeur de ne pas avoir fourni de champ de formulaire disparu.
Je déteste la syntaxe Angulaire ici, en changeant le fonctionnement de comportement lorsque vous passez de 1 à n les valeurs!
Vous pouvez également utiliser patchValue juste mettre une ou plusieurs entrées individuellement:
Ici
jobStatus valeur est"
undefined
'.Définir une valeur:
pour le faire fonctionner.