DataTable Edit无法使用二维进行验证

时间:2018-01-24 03:32:42

标签: angular datatable primeng primeng-datatable

我遇到有关Datatable Editor

的问题

我的表是PrimeNG的数据表,该表可以编辑该行的任何单元格,并且所有单元格都是必需的:

这是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

1 个答案:

答案 0 :(得分:1)

  

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

确实,你是对的。您遇到的错误意味着您必须拥有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