我正在使用这段代码从table of 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>
这将从数据库中删除用户,但不会刷新我的表(过滤器应转义已删除行的记录,但不会,我可以看到表中的记录)。
请删除记录后,有什么方法可以刷新表?
编辑
有些奇怪
当我尝试时:
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响应。
我认为我的问题与表无关,但是与我的服务无关,我this.http.delete
等待的状态不同于200
,因为我在订阅中遇到了错误。
deleteUser(id: number): Observable<Object> {
return this.http.delete(`${environment.apiUrl}/v0/users/${id}`);
}