I am using PrimeNG DataTable with Angular and trying to implement something similar to this StackBlitz and I have two issues:
I am loading the table successfully and once I click on the edit button on the grid function editRow(row) it fails due to (see bold font below)
this.iToDoList.filter(row => row.isEditable).map(r => { r.isEditable = false; return r })
error:propert isEditable does not exists on type iToDoList
- How to add (inline) record to the table, like add comment ?
HTML
<p-table #dt [value]="iToDoList" dataKey="ID" [paginator]="true" [rowsPerPageOptions]="[10,50,100]"
[rows]="10">
<ng-template pTemplate="header">
<tr>
<th>ID</th>
<th>Comment</th>
<th>Action</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-row>
<tr>
<td>{{row.ID}}</td>
<td>
<div *ngIf="!row.isEditable">{{row.Comment}}</div>
<div *ngIf="row.isEditable">
<input type="text" [(ngModel)]="row.comment">
</div>
</td>
<td><button (click)="editRow(row)">Edit</button></td>
<td> <button (click)="save(row)">Save</button></td>
</tr>
</ng-template>
</p-table>
Interface
export interface IToDoList {
ID: number,
Comment: string
}
component.ts
iToDoList: IToDoList[] = null;
ngOnInit(): void {
//this is loading the table successfully
this.GetToDoList(this.userID);
}
GetToDoList(ID: string) {
this._dashboardService.getToDoList(ID)
.subscribe(
data => {
this.iToDoList = data.result;
data.map(row => {
row.isEditable = false;
});
},
error => console.log('GetControls Method: ' + <any>error, 'alert alert-danger'));
}
//issue is here
editRow(row) {
console.log("row " + row.ID)
this.iToDoList.filter(row => row.isEditable).map(r => { r.isEditable = false; return r })
row.isEditable = true;
}
***************************************************UPDATE**************************************************** I fixed my first issue by changing the interface to
export interface IToDoList {
ID: number,
Comment: string,
isEditable: boolean
}
Now my second issue, how to add inline record ?