J'ai dans ma demande un formulaire d'inscription. Mais dans ce formulaire d'inscription, il y a une entrée optionnelle 'mot de passe' et 'répétition du mot de passe'. Puisque je préfère ne pas utiliser l'objet FormControl
pour récupérer ces 2 valeurs (les autres valeurs conviennent), je voudrais une solution de contournement pour l'utilisation de ngModel
dans un <form>
TS:
public password: string = '';
public passwordRe: string = '';
public registrationForm;
constructor(public fb: Formbuilder) {
this.registrationForm = this.fb.group({
'firstname' : [null, Validators.required],
'lastname': [null, Validators.required]
});
}
HTML
<form [formGroup]="registrationForm" (ngSubmit)="doSomething()">
<div class="form-group"
[ngClass]="{'has-error':!registrationForm.controls['firstname'].valid
&& registrationForm.controls['firstname'].touched}">
<label>Firstname: *</label>
<input class="form-control" type="text" placeholder="Firstname" [formControl]="registrationForm.controls['firstname']"/>
</div>
<div class="form-group"
[ngClass]="{'has-error':!registrationForm.controls['lastname'].valid
&& registrationForm.controls['lastname'].touched}">
<label>Lastname: *</label>
<input class="form-control" type="text" placeholder="Lastname" [formControl]="registrationForm.controls['lastname']"/>
</div>
<!-- NG MODELS -->
<input type="password" [(ngModel)] = "password"/>
<input type="password" [(ngModel)] = "passwordRe" />
<input type="submit" value="Some submit button"/>
</form>
Cette page est affichée sur plusieurs pages en tant qu’enfant, via un sélecteur. Placer les mots de passe au-dessus du formulaire serait la solution la plus paresseuse, mais je devrais changer le code pour l'obtenir. (en plus, ça n'a pas l'air bien) Je me demandais donc s'il y avait une solution de contournement pour ce problème spécifique.
Si vous fournissez l'attribut:
formControlName = "le nom de votre contrôle de formulaire ici"
à l'entrée, ils peuvent alors coexister comme tel;
<input type="password"
[(ngModel)] = "password"
formControlName = "password"/>
La formControlName
doit correspondre au nom fourni dans votre groupe de formulaires.
this.formGroup = this._formBuilder.group({
'password': new FormControl(this.password, [
Validators.required,
Validators.minLength(4)
])
});