Тип "Person[]" нельзя назначить типу "ColumnSettings[] в Angular 7 Datatable
Проблема
Тип "Person[]" нельзя назначить типу "ColumnSettings[]".
Тип "Person" не имеет общих свойств с типом "ColumnSettings'.ts(2322)
Ожидаемый тип происходит из свойства 'columns', которое объявлено здесь в типе 'Settings'
я следовал http://l-lin.github.io/angular-datatables/
проблема возникла после добавления данных JSON.
Персональный класс
export class Person {
id: number;
first_name: string;
last_name: string;
}
Угловой код
publicDeals: Person[] = [];
ngOnInit(): void {
const that = this;
this.abc();
console.log(this.publicDeals);
this.dtOptions = {
pagingType: 'full_numbers',
pageLength: 2,
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.httpClient
.post<DataTablesResponse>(
this.api_url,
dataTablesParameters, {}
).subscribe(resp => {
that.persons = resp.data;
//console.log(resp);
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: [],
});
});
},
columns: that.publicDeals,
};
}
abc() {
return this.service.apifunc()
.subscribe(persons => {
this.testts = TABLE_FIELDS;
TABLE_FIELDS.forEach(element => {
this.publicDeals.push(element);
});
this.dtTrigger.next();
});
}
Данные Json
TABLE_FIELD: [
{
data: "id"
},
{
data: "first_name"
},
{
data: "last_name"
}
]
не может добавить JSON в столбцы в Dataatable.
любая помощь приветствуется.
2 ответа
this.dtOptions.columns
это type
из ColumnSettings[]
См. https://github.com/DefinitelyTyped/DefinitelyTyped/blob/e01d6e7abb2343c6b845d4945a368ed55cbf5bd2/types/datatables.net/index.d.ts#L1309
но вы передаете Person[]
поэтому компилятор машинописи выдает ошибку.
Вы должны изменить данные, прежде чем приступить к this.dtOptions.columns
,
Решение, которое сработало
this.abc();
this.p_col = this.publicDeals;
this.dtOptions = {
pagingType: 'full_numbers',
pageLength: 2,
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.httpClient
.post<DataTablesResponse>(
this.api_url,
dataTablesParameters, {}
).subscribe(resp => {
that.persons = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: [],
});
});
},
columns: this.p_col,
};