Я использую этот фрагмент кода для удаления записи из таблицы PrimeNg .
delete(user: User) {
this.confirmationService.confirm({
message: 'Do you want to delete this record?',
header: 'Delete Confirmation',
icon: 'pi pi-info-circle',
accept: () => {
this.usersService.deleteUser(user.id)
.subscribe(users => {
this.users = this.users.filter(item => item.id != user.id);
});
},
reject: () => {
// do another thing
}
});
}
HTML
<p-table #dt [columns]="cols" [value]="users" [paginator]="true" [rows]="5" [rowsPerPageOptions]="[5,10,20]"
[resizableColumns]="true">
<ng-template pTemplate="caption">
<div style="text-align: left">
<i class="pi pi-search" style="margin:4px 4px 0 0"></i>
<input type="text" pInputText placeholder="Filter.."
(input)="dt.filterGlobal($event.target.value, 'contains')" style="width:auto">
</div>
</ng-template>
<ng-template pTemplate="header" let-columns>
<tr>
<th *ngFor="let col of columns" [pSortableColumn]="col.field" pResizableColumn pReorderableColumn>
{{col.header}}
<p-sortIcon [field]="col.field"></p-sortIcon>
</th>
<th>Action</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-rowData let-columns="columns">
<tr>
<td *ngFor="let col of columns">
{{rowData[col.field]}}
</td>
<td>
<button pButton type="button" icon="pi pi-check" class="ui-button-info"
(click)="update(rowData)"></button>
<button pButton type="button" icon="pi pi-trash" class="ui-button-danger"
(click)="delete(rowData)"></button>
</td>
</tr>
</ng-template>
</p-table>
Это удаляет пользователя из базы данных, но не обновляет sh моей таблицы (фильтр должен экранировать запись удаленной строки, но это не так, я вижу свою запись такой, как она есть в таблице).
Можно ли как-нибудь обновить sh таблицу после удаления записи, пожалуйста?
Редактировать
Что-то странное
Когда я пытаюсь:
this.usersService.deleteUser(user.id).subscribe(
result => {
console.log("Success: " + result)
},
error => {
this.users = this.users.filter(item => item.id != user.id);
console.log("Error: " + error);
},
() => {
console.log("END");
}
);
Это работает очень хорошо, я думаю, что мой ответ службы является ошибкой, а не правильным ответом, но в бэкэнде я уверен, что я возвращаю ответ 200 OK в бэкэнде.
I думаю, что моя проблема не связана с таблицей, но с моим сервисом, я this.http.delete
жду другого статуса, чем 200
, для этого я получил ошибку в подписке.
deleteUser(id: number): Observable<Object> {
return this.http.delete(`${environment.apiUrl}/v0/users/${id}`);
}