Je crée un modèle de formulaire manuellement en utilisant FormGroup & FormControl
, c'est bien, mais j'obtiens un résultat inattendu quand angular lie mon FormControl
à l'entrée correspondante.Angular - FormControl n'est pas lié à formControlName correctement
Je crée le modèle et le lie au HTML de cette façon.
private initFormModel(user: User): FormGroup {
const _formGroup = new FormGroup({
fullname: new FormControl({ value: user.name })
});
return _formGroup;
}
<!-- This is part of the html code/I set on my component class this.form = this.initFormModel(... -->
<form (ngSubmit)="onSubmit()" [formGroup]="form" novalidate>
<!-- .... --->
<input type="text" formControlName="fullname" name="fullname">
Résultat
Il n'y a rien de mal, si vous me attendez d'utiliser FormBuilder
cela ne change rien. J'ai [Object object]
lié à mon entrée, la chose amusante est que si j'ajoute l'attribut désactivé à ma définition de contrôle de forme, cela fonctionnera bien. Comme: fullname: new FormControl({ value: user.name, disabled: false })
J'ai le texte lié, aussi Si j'utilise la notation Array pour créer le FormControl (fullname: [user.name, ...]
).
Juste au cas où je suis actuellement en utilisant angulaire v2.4.10
C'est grand, je pris aussi je regarde le code source angulaire pour 'FormControl'. Pouvez-vous ajouter ceci à votre réponse? https://github.com/angular/angular/blob/4.4.0-RC.0/packages/forms/src/model.ts#L579 Si le type de formState est égal à object, il vérifie la valeur, et propriétés désactivées à être présentes. Sinon, retournera false, et 'this._value' ne sera jamais défini. C'est la ligne d'utilisation https://github.com/angular/angular/blob/4.4.0-RC.0/packages/forms/src/model.ts#L767 –