Угловые таблицы данных dtOptions обновляются только со второго клика - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь обновить (перерисовать) угловые данные с помощью новых dtOptions

<button type="button" class="btn btn-success m-r-sm" id="filter" (click)="filter()">
   {{'apply' | translate}}
</button>
filter() {
const that = this;
  this.dtOptions = {
    pagingType: 'full_numbers',
    pageLength: 20,
    serverSide: true,
    processing: true,
    searching: false,
    ajax: (dataTablesParameters: any, callback) => {
      that.service.getExtendedCdrByCriteria(this.selectedDirection, this.selectedDisposition, this.caller, this.calledNumber, this.from, this.to, dataTablesParameters).subscribe(resp => {
        that.extendedCdrs = resp.data;
        console.log('ajax call');

        callback({
          recordsTotal: resp.recordsTotal,
          recordsFiltered: resp.recordsFiltered,
          data: []
        });
      });
    },
    columns: [
      { data: 'direction' },
      { data: 'datetime' },
      { data: 'callerNumber' },
      { data: 'calledNumber' },
      { data: 'timeOnHold' },
      { data: 'callTotalTime' },
      { data: 'trunkName' },
      { data: 'disposition' },
      { data: 'recordingfile' }
    ],
  };
  this.rerender();
}

rerender(): void {
  try {
    this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => {
      dtInstance.destroy();
      this.dtTrigger.next();
    });
  } catch (err) {
    console.log(err);
  }
}

Когда я нажимаю на кнопку в первый раз, вызовы ajax не выполнялись, и перерисовка таблицы с теми же данными, но при повторном нажатии на кнопку this.dtOptions обновляет и повторно отображает таблицу с правильными обновленными данными. как заставить его запускать первое нажатие кнопки?

1 Ответ

0 голосов
/ 14 ноября 2019

Я думаю, что ваш rerender() метод выполняется быстрее, чем был завершен ajax. Попробуйте вообще удалить свой метод rerender().

...