Я использую PrimeNG DataTable с Angular и пытаюсь реализовать что-то похожее на это StackBlitz , и у меня есть две проблемы:
Я успешно загружаю таблицу икак только я нажимаю кнопку редактирования в функции сетки editRow (строка), происходит сбой из-за (см. жирный шрифт ниже)
this.iToDoList.filter (row => row.isEditable ).map (r => { r.isEditable = false; возврат r})
ошибка: свойство isEditable не существует для типа iToDoList
Как добавить (встроенную) запись в таблицу, например добавить комментарий?
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>
Интерфейс
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;
}
***************************************************ОБНОВИТЬ**************************************************** Я исправил свою первую проблему, изменив интерфейс на
export interface IToDoList {
ID: number,
Comment: string,
isEditable: boolean
}
Теперь мой второй вопрос, как добавить встроенную запись?