Ahoj,
snažím se dát dohromady v angularu formulář, který má pár statických polí k vyplnění a pár dynamických (uživatel si může nastavit, kolik jich bude a přes *ngFor se následně vygenerují ve formuláři). Všechna pole podléhají validaci a v případě, že nevyhovují, tak bych rád docílil toho, aby byl submit button disablovaný.
Angular bohužel nedávno dostal update, který zapřínil, že pokud člověk využívá FormGroup a má input s ngModelem, tak daný input musí být pojmenovaný. V template ale, pokud je mi známo, není úplně možné si dynamicky generovat jména. Na stackoverflow jsem našel radu k AngularJS, která doporučila si generované inputy obalit novou FormGroup a pojmenovat tu. Nedá se říct, že by to pomohlo, koneckonců je to akorát přesunutí problému někam jinam. Má otázka tedy zní - Jak mohu zajistit validaci FormGroup, která má dynamicky generované inputy? Ideální by bylo template-driven řešení.
Díky za pomoc, přikládám ještě template kód formuláře.
<form #f="ngForm" (ngSubmit)="createProfile()">
<div class="row align-items-center mb-2">
<div class="col-sm-2">
<b>Name:</b>
</div>
<div class="col-sm-10">
<input type="text" [(ngModel)]="profile.name" class="form-control"
name="profileName" required pattern="[a-zA-Z_][a-zA-Z_\-0-9]*">
</div>
</div>
<div class="channelBox">
<div *ngFor="let c of profile.channels">
<form name="innerForm">
<div class="row align-items-center mb-2">
<div class="col-sm-2">
<b>Name:</b>
</div>
<div class="col-sm-10">
<input type="text" [(ngModel)]="c.name" class="form-control" required
pattern="[a-zA-Z_][a-zA-Z_\-0-9]*" name="channelName">
</div>
</div>
</form>
</div>
</div>
<div>
<button class="btn btn-success" type="submit" [disabled]="!f.valid">
Create profile
</button>
<button class="btn btn-default" (click)="d('reason')">Cancel</button>
</div>
</form>