如何在Angular 2

时间:2017-08-10 11:37:32

标签: angular primeng

我正在尝试在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字段中不可编辑。

我做错了吗?

感谢任何帮助。

1 个答案:

答案 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>

enter image description here