我正在尝试在Angular 2中使用Primeng中的DataTable。
我在数据表中显示一组行,其中有一列用于编辑按钮。
点击任意一行的编辑按钮,该行的所有字段都应该是可编辑的。
HTML:
<p-dataTable [value]="testcases" [(selection)]="selectedTestCases" dataKey="ModuleID" [editable]="true" sortMode="multiple">
<p-column [style]="{'width':'10 px'}" selectionMode="multiple"></p-column>
<p-column field="ModuleID" [editable]="isEditable" header="ModuleID"></p-column>
<p-column field="TestCaseID" [editable]="isEditable" header="TestCaseID"></p-column>
<p-column field="EstimatedTime" [editable]="isEditable" header="EstimatedTime"></p-column>
<p-column field="isEditable" header="Edit" [editable]="isEditable">
<ng-template let-col let-row="rowData" let-index="rowIndex" pTemplate="body" >
<span>
<input type="button" value="Edit" (click)="edit(row,index)" />
</span>
</ng-template>
</p-column>
角度组件:
edit(rowdata:TestCases,index:number) {
this.selectedTestCases=rowdata
rowdata.isEditable=true;
}
使用此代码,该行的属性设置为可编辑,但在UI字段中不可编辑。
我做错了吗?
感谢任何帮助。
答案 0 :(得分:3)
在rowClick上使用此函数来获取单击的行 -
onRowSelectClick(e){
console.log(e);
this.CloseAllEditable();
e.data.isEditable=true;
}
CloseAllEditable(){
for(let item of this.testcases){
if(item.isEditable){
item.isEditable = false;
}
}
}
<p-column field="EstimatedTime" header="EstimatedTime">
<template let-col let-row="rowData" let-index="rowIndex" pTemplate="body">
<span *ngIf="!row.isEditable">{{row.EstimatedTime}}</span>
<span *ngIf="row.isEditable"><input type="text" [(ngModel)]="row.EstimatedTime"></span>
</template>
</p-column>