Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting error in Angular 5 Datatables: cannot reinitialise DataTable

I am working on the angular based project. I am using datatables to display data. When I try to do some modifications on the table, I get the following error.

DataTables warning: table id=DataTables_Table_0 - Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3

like image 420
Code Lover Avatar asked Mar 12 '18 10:03

Code Lover


People also ask

How to resolve Cannot reinitialise DataTable?

This error is triggered by passing in options to a DataTables constructor object when the DataTable instance for the selected node has already been initialised. For example: $('#example'). dataTable( { paging: false } ); $('#example').

What is bDestroy in DataTable?

bDestroy. Show details. Replace a DataTable which matches the given selector and replace it with one which has the properties of the new initialisation object passed. If no table matches the selector, then the new DataTable will be constructed as per normal.


2 Answers

I think it is because you are using [dtTrigger]="dtTrigger" in Angular DataTables and rerendering the table on the same page. If you have this problem you should use the following trick to handle dtTrigger

<table datatable [dtOptions]="dtOptions" [dtTrigger]="dtTrigger" class="table">

Make sure you do not use this.dtTrigger.next() on ngOnInit()

ngAfterViewInit(): void {
    this.dtTrigger.next();
}

Rerender it when you use the second time

rerender(): void {
  this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => {
     dtInstance.destroy();
     this.dtTrigger.next();     
  });
}
like image 192
Akash Avatar answered Oct 11 '22 19:10

Akash


I solved this problem by removing the following code in *.ts file:

dtOptions: DataTables.Settings = {};
 this.dtOptions = {
};
like image 30
Code Lover Avatar answered Oct 11 '22 17:10

Code Lover