如何在 prime ng 中为 angular2 应用程序提供内联编辑和删除按钮以及新按钮

How to give inline edit and delete button along with new button in prime ng for angular2 applications

我有一个页面,它只有一个用户的东西。 但是现在我必须创建一个 table 并且我需要获取数据,因此在 table 中我必须内联编辑和删除按钮。如果我单击编辑按钮,那么我必须能够编辑整行,删除意味着必须删除整行。 当我单击“新建”按钮时,它必须为我创建一个包含编辑和删除操作的新行。 我需要使用 ng-prime 本身来执行此操作。 那么,任何人都可以帮助我提供链接或任何演示。

你可以使用[editable]="true"

来自Official Documentation reference

Incell editing is enabled by setting editable property true both on datatable and columns. Clicking a cell switches to edit mode and hitting enter key or clicking another cell switches it back to view mode.

分量:

    import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {

  data: any = [];
  delRow;

  editRow(row) {
        this.data.filter(row => row.isEditable).map(r => { r.isEditable = false; return r })
    row.isEditable = true;
  }

  save(row){
    row.isEditable = false
  }

  addNew(){
    this.data.push({
      name: '',
      value: ''
    })
  }

  delete(row){
      console.log(row);
      this.delRow = this.data.indexOf(row);
      this.data.splice(this.delRow,1);
      console.log(this.data);

  }

  getData() {    
    this.data = [
      {name: "Name1", value: "value1"},
      {name: "Name2", value: "value2"},
      {name: "Name3", value: "value3"},
      {name: "Name4", value: "value4"}
      ];
      this.data.map(row => {      
        row.isEditable = false;        
      });    

  };


}

HTML:

 <button (click)="getData()">Load Data</button>
<button (click)="addNew()">Add New</button>

<p-dataTable [immutable]="false" [value]="data" [editable]="true">
    <p-column field="name" header="Name">
      <ng-template let-row="rowData" pTemplate="body">
        <div *ngIf="!row.isEditable">{{row.name}}</div>
        <div *ngIf="row.isEditable">
          <input type="text" [(ngModel)]="row.name">
        </div>
    </ng-template>
    </p-column>
    <p-column field="value" header="Value">
      <ng-template let-row="rowData" pTemplate="body">
        <div *ngIf="!row.isEditable">{{row.value}}</div>
        <div *ngIf="row.isEditable">
          <input type="text" [(ngModel)]="row.value">
        </div>
    </ng-template></p-column>    

    <p-column field="" header="" [style]="{'text-align':'center'}">
      <ng-template let-row="rowData" pTemplate="body">
        <button (click)="editRow(row)">Edit</button>
      </ng-template>
    </p-column>
    <p-column field="" header="" [style]="{'text-align':'center'}">
      <ng-template let-row="rowData" pTemplate="body">
        <button (click)="save(row)">Save</button>
      </ng-template>

    </p-column>
     <p-column field="" header="" [style]="{'text-align':'center'}">
      <ng-template let-row="rowData" pTemplate="body">
        <button (click)="delete(row)">Delete</button>
      </ng-template>


    </p-column>
</p-dataTable>

Here is a WORKING DEMO