我有一个表单,用户可以根据需要插入任意数量的输入 . 他们从1输入开始 . 每个输入都有一个模式验证 . 如果模式不正确,我会显示错误 . 然后,用户可以使用添加按钮添加新的输入字段 . 但是,新输入字段与第一个输入字段具有相同的验证 . 这意味着如果用户在新输入字段中输入错误的数字,则错误将显示在每个输入字段上 . 如何解决此问题,我认为名称和#ngmodel必须是唯一的,但我不知道我怎么能在这里使它独一无二 .
<form #form="ngForm" class="form">
<div layout="column" flex *ngFor="let item of numbers; let i = index">
<div layout="row" flex >
<mat-form-field class="row-margin" flex>
<input [(ngModel)]="numbers[i].value" name="test" matInput placeholder="Number input" #test="ngModel" pattern="^[0-9]{3}.[0-9]{2}.[0-9]{2}.[0-9]{2}(\.[0-9]{2})?$" flex>
<mat-error *ngIf="test.errors?.pattern">No valid pattern</mat-error>
</mat-form-field>
<!-- only delete elements if list has more dan one element -->
<button *ngIf="i >= 1" mat-button (click)="deleteNumberFromList(i)">Delete</button>
</div>
</div>
<mat-dialog-actions class="actions" layout="row">
<button type="submit" mat-button [disabled]="!form.valid" (click)="add()">Save</button>
</mat-dialog-actions>
</form>
2 回答
这使得每个输入都具有
#test
的模板引用,因此您正在复制引用 .引用
inputs
引用<form #form="ngForm">
包装所有内容,然后使用该表单检查错误 . 它会是这样的还要记住,每个ngModel输入都必须具有唯一的名称 . 您可以使用索引变量生成它 .
在组件中定义数组并继续推入它 .