数据表编辑无法用二维验证

DataTable Edit Can not validate with two-dimensional

我遇到有关数据table编辑器

的问题

我的table是PrimeNG的数据table,这个table可以编辑行的任意单元格,所有单元格都是必需的:

这里是Datatable的要求:

可以编辑任何单元格 验证任何单元格(必需) 当我完成 2 个要求时,当输入为空时输入会出现错误

Error: If ngModel is used within a form tag, either the name attribute must be set or the form
  control must be defined as 'standalone' in ngModelOptions.

  Example 1: <input [(ngModel)]="person.firstName" name="first">

我认为问题是当输入具有相同的值时名称为空且重复。

现在我想像这样设置每个输入的属性名称

[name]="`{col.field}` + '_' + `value of first row` + '_' + data[col.field]"

这将使输入是唯一的,我该怎么做,或者有人建议我其他解决方案

这是 Plunker https://plnkr.co/edit/n0S4JK1siLvDHypTSpkZ?p=preview

i think the problem is the name is blank and duplicate when input have same value.

的确,你是对的。你的错误意味着你必须有一个 name 属性 并且这个永远不应该是空的。但是,当您删除单元格值时,data[col.field] 变为空,因此 name 属性.

所以要解决你的问题,你不应该依赖这个值。因此,您可以做的是分配行索引和列索引的串联。像 rowIndex_columnIndex :

<form (ngSubmit)="onSubmit()" #form="ngForm">
<p-dataTable [value]="data" [editable]="true">
  <p-column *ngFor="let col of cols,let j=index" [field]="col.field" [editable]="true" [header]="col.header">
    <ng-template let-col let-data="rowData" pTemplate="editor" let-i="rowIndex">
      <input [(ngModel)]="data[col.field]" pInputText required="true" [name]="i+'_'+j"/>
    </ng-template>
  </p-column>
</p-dataTable> 

其中 i 是行的索引,j 是列的索引。

查看工作 Plunker