ngsubmit formgroup formcontrolname angular typescript angular2-forms

angular - formcontrolname - ngmodel formgroup



Uso de[(ngModel)] dentro de FormGroup (2)

Tengo en mi solicitud un formulario de registro. Pero dentro de este formulario de registro hay una entrada opcional de ''contraseña'' y ''repetir contraseña''. Como prefiero no usar el objeto FormControl para recuperar estos 2 valores (otros valores están bien), me gustaría una solución para el uso de ngModel dentro de un <form>

MCVE

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>

Esta página se muestra en varias páginas como un niño, a través del selector. Colocar las contraseñas en la parte superior, fuera del formulario sería la solución más perezosa, pero tendría que cambiar algún código para obtener eso. (además, no se ve bien) Así que me preguntaba si hay una solución para este problema específico.


Básicamente, puede especificar que el ngModel que está utilizando es independiente. Y usa algo como esto

<input type="password" [(ngModel)] = "password" [ngModelOptions]="{standalone: true}" />


Si proporciona el atributo:

formControlName = "su nombre de control de formulario aquí"

en la entrada entonces pueden coexistir así;

<input type="password" [(ngModel)] = "password" formControlName = "password"/>

El formControlName debe coincidir con el nombre proporcionado en su FormGroup

this.formGroup = this._formBuilder.group({ ''password'': new FormControl(this.password, [ Validators.required, Validators.minLength(4) ]) });