Recuperé datos de la base de datos y me gustaría preestablecer un formulario de actualización con valores preestablecidos. Los valores están preestablecidos cuando FormControlName no está configurado en el campo de entrada, la interpolación funciona. Una vez que se agrega FormControlName, lo elimina. He probado setValue y patchValue ninguno ha funcionado. ¿Alguna sugerencia de por qué esto sería o una posible solución? gracias de antemano
ngOnInit() { this.currUserId = this.userId$.value; this.authService .findOne(this.currUserId) .pipe(map((user: User) => (this.currentUser = user))) .subscribe(); }<div class="tab-container" *ngIf="currentUser"> <form [formGroup]="accountForm" (ngSubmit)="submit()"> <ion-card class="personal-form"> <h3>Personal Details</h3> <div class="form-input"> <label>FirstName</label> <input formControlName="firstName" type="text" value="{{currentUser.firstName }}" /> </div> <div class="form-input"> <label>surname</label> <input formControlName="surname" type="text" value="{{ currentUser.surname }}" /> </div> </form> </div>
En lugar de pasar valor en el elemento de entrada, use "formBuilder".
constructor( ... private _fb: FormBuilder, ){} ngOnInit() { this.accountForm = this._fb.group({ firstName: [''], surname: [''], }); this.getCurrentUser(); } getCurrentUser() { this.currUserId = this.userId$.value; this.authService .findOne(this.currUserId) .subscribe((user: User) => { this.currentUser = user; this.accountForm.patchValue(this.currentUser); }); } }y elimine ambos value="{{currentUser.firstName }}" del formulario HTML.