У меня возникли проблемы с получением моего angular-datatable для отображения нового списка столбцов после повторной визуализации. Я следовал примеру, показанному в документах, для повторной визуализации, и я могу заставить таблицу перерисовываться. Я могу манипулировать некоторыми функциями, такими как поиск и pageLength, но по какой-то причине я не могу изменить свои столбцы.
У меня есть очень глубокий набор данных, из-за которого моя таблица выглядела бы ужасно, если бы я отображал все столбцы сразу, поэтому я хотел бы дать пользователям возможность выбирать, какие столбцы они видят.
Я бы даже был готов загружать все столбцы сразу и просто включать и выключать видимость, но я также не могу влиять на видимость.
У кого-нибудь была эта проблема раньше?
Функция ререндера:
rerender(): void {
this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => {
dtInstance.destroy();
// these work
this.dtOptions.searching = true;
this.dtOptions.pageLength = 2;
// these do not
this.dtOptions.columns = newColumnList;
this.dtOptions.columns[some-index].visible = false;
this.dtTrigger.next();
});}
Начальные dtOptions:
this.dtOptions = {
searching: false,
pagingType: 'full_numbers',
pageLength: 10,
retrieve: true,
serverSide: true,
processing: true,
language: {
zeroRecords: 'Nothing Found'
},
ajax: (dataTablesParameters: any, callback) => {
const payload = this.passFilterService.processPagination(this.filter, dataTablesParameters);
this.http
.post<any>(
environment.api + '/things/list',
{payload: payload}, {}
).subscribe(resp => {
if (resp.data.data === null) {
resp.data.data = 0;
}
callback({
recordsFiltered: resp.data.totalCount,
data: resp.data.data,
recordsTotal: resp.data.totalCount
});
});
},
columns: this.tableColumns
};
Начальные столбцы (ограниченное количество полей):
tableColumns = [
{
title: 'Customer',
data: 'Id',
render: function(data) {
return `<a href="/pass/` + data + `" class="cursor-pointer actionView" title="View">Action</a>`;
}
}, {
title: 'Created',
data: 'createdAt',
orderable: true,
visible: true,
}, {
title: 'Updated',
data: 'updatedAt',
orderable: true,
visible: true,
}, {
title: 'Disabled',
data: 'isVoided',
orderable: true,
visible: true,
}
];
Реализация таблицы:
<table datatable [dtOptions]="dtOptions" [dtTrigger]="dtTrigger" class="row-border hover">
</table>