Angular 7 - 在数据表中重新加载数据

4

我正在使用angular-datatables来使用Angular 7。

我正在尝试定义一个"重新渲染"按钮,以便重新加载数据就像这个例子中所示。

我不理解应该在渲染函数中放置什么:

我的API函数:

fn_getFavoriteTables() {

  this._getFavoriteTablesApiCall =  this.getFavoriteTablesService.getFavoriteTables(Number(localStorage.getItem('UserID')), Number(localStorage.getItem('BranchID'))).pipe(takeUntil(this.destroySubject$)).subscribe(x => {
        this.getFavoriteTables = x;
        this.dtTrigger.next();
    });

};

重新渲染函数:

rerender(): void {
    this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => {
        // Destroy the table first 

        dtInstance.destroy();


        // Call the dtTrigger to rerender again
        this.dtTrigger.next();
    });
}

ngOnDestroy(): void {
  console.log('ngDestroy');
  // Do not forget to unsubscribe the event
  this.dtTrigger.unsubscribe();
}
3个回答

4
这也可以这样做:
import { DataTableDirective } from 'angular-datatables';

dtElement: DataTableDirective;
dtInstance: Promise<DataTables.Api>;

rerender(): void  {
  this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => {
    dtInstance.ajax.reload()
  });
}

我尝试了这个解决方案,但它找不到命名空间 DataTables.Api。我已经导入了 DatatablesModule 以及 types/datatablesnet,但仍然无法解决问题... 我正在使用 datatables 的 9.0.2 版本。 - user10484617

1

1
我找到了一个对我有效的答案: 这是源网站
 rerender(): void {
    this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => {
        // Destroy the table first 
        //debugger;
        var table = $('#favoriteTable').DataTable();

        $('#tableDestroy').on('click', function () {
            table.destroy();
        });

        dtInstance.destroy();

        this.fn_getFavoriteTables();

    });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接