PrimeNg refre sh таблица после удаления записи - PullRequest
0 голосов
/ 19 апреля 2020

Я использую этот фрагмент кода для удаления записи из таблицы 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}`);
}

1 Ответ

0 голосов
/ 19 апреля 2020

Проблема решена

В бэкэнде я вернул 200 код состояния, и delete не принимаю этот статус, потому что мой код не работает.

Все, что я делаю в качестве ответа в бэкэнде устанавливается 204 , и все работает нормально.

...