Это потому, что angular-datatables по сути является угловой оболочкой для подключаемого модуля jQuery datatable (находится здесь: https://datatables.net/).
В соответствии с их руководством
Любые манипуляции с таблицейпосле инициализации необходимо выполнить через API
Находится здесь https://datatables.net/manual/tech-notes/3
плагин angular-datatables на самом деле имеет API для поддержки асинхронно загружаемых данных. Пример можно найти здесь: https://l -lin.github.io / angular-datatables / # / basic / angular-way
Теперь, для вашего конкретного примера, обходным решением будет удаление компонента таблицы из DOMполностью измените столбцы, а затем повторно инициализируйте компонент таблицы. Итак, в вашем примере stackblitz:
В app.component.html:
<button (click)="buttonclick()">change columns</button>
<hello *ngIf="showTable" [columns] = "columns"></hello>
В app.component.ts изменитеФункция нажатия кнопки и добавление переменной showTable:
showTable: boolean = true;
buttonclick(){
this.showTable = false;
this.columns=["new_id","new_firstname","new_lastname"];
setTimeout(()=>{this.showTable = true}, 0);
}
Это будет существенно воссоздавать всю таблицу при каждом нажатии кнопки.