我遇到有关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
答案 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