Obtuve un formulario modal dentro de un bucle con menús.
<div *ngFor="let menu of menus let i = index"> ... <form #updateMenu="ngForm" [formGroup]="nameForm" (ngSubmit)="onSubmit(updateMenu)" style=" padding: 20px; display:flex; justify-content:center; flex-direction: column;" enctype="multipart/form-data"> <mat-form-field appearance="fill"> <mat-label>Title</mat-label> <input matInput placeholder="{{menu.title}}" formControlName="title" [(ngModel)]="menu.title" required> </mat-form-field> <mat-form-field appearance="fill"> <mat-label>Description</mat-label> <textarea matInput name="description" formControlName="description" placeholder="example: All of our pizzas are amazing" required></textarea> </mat-form-field> <br> <label>Image of menu *</label> <img src="{{url + 'menu/get-image/' + menu.image}}" style="height:150x;" /> <input type="file" name="image" (change)="onSelectedFile($event)" required/> <br> <input type="submit" class="submit" value="SEND" [disabled]="!updateMenu.form.valid" style="border:none; background:#181818; height: 40px; color: #f1f1f1; font-size: 22px;" /> </form> </div> Tengo un problema con formControlName y es que al usar [(ngModel)] siempre carga los valores del último elemento del bucle for
He intentado hacerlo como formControlName para que sea dinámico pero me sale un error:
TS2339: la propiedad 'título' no existe en el tipo 'MenuupdateComponent'
Mi componente con formBuilder:
public nameForm:FormGroup; constructor(private _AdminmenuService:AdminmenuService, private formBuilder: FormBuilder) { this.nameForm = this.formBuilder.group({ title: '', description: '', image: '' }); }¿Cómo puedo arreglar eso? ¡Muchas gracias!
Hay dos soluciones disponibles:
No combine el formulario reactivo con el formulario controlado por plantilla
use la matriz de formulario para construir un formulario iterado