如何将自定义参数添加到 Angular 5 DataTables
How can add custom parameters to Angular 5 DataTables
我正在开发一个以 PHP 作为后端的 Angular5 项目。我被困在这个水平上。
以下是我的代码:
this.dtOptions = {
pagingType: 'full_numbers',
pageLength: 10,
order: [0, 'desc'],
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.http
.post<DataTablesResponse>(
'http://localhost/api/webapi/',
dataTablesParameters,{ headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'token'
})}
).subscribe(resp => {
that.records = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: []
});
});
},
columns: [{ data: 'id' }, { data: 'name' }]
};
正如我在这段代码中观察到的,我正在发送数据表的默认参数 "dataTablesParameters"。如何添加我的自定义参数,如 (entryid) 和 "dataTablesParameters"?
请指导。
我认为无法按如下方式创建父对象:
ParentObj = { dataTablesParameters: _dataTablesParameters , entryid:_entryid }
编辑:所以你的代码看起来像这样
declare interface parentObj : { dataTablesParameters: any , entryid: any }
this.ParentObj = { dataTablesParameters: _dataTablesParameters , entryid:_entryid }
this.dtOptions = {
pagingType: 'full_numbers',
pageLength: 10,
order: [0, 'desc'],
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.http
.post<DataTablesResponse>(
'http://localhost/api/webapi/',
parentObj,{ headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'token'
})}
).subscribe(resp => {
that.records = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: []
});
});
},
columns: [{ data: 'id' }, { data: 'name' }]
};
发送 parentObj 而不是您的 http 请求中的 dataTablesParameter。
您只需像这样声明对象:
userData = { token: '', entryid : '' };
并且在调用 ajax 时,您应该使用 Object.assign 合并两个对象,例如:
Object.assign(dataTablesParameters,this.userData)
ajax: (dataTablesParameters:any, callback) => {
that.http
.post<DataTablesResponse>(
'http://localhost/api/webapi/',Object.assign(dataTablesParameters,this.userData),{}).subscribe(resp => {
that.records = resp.data;
console.log(resp);
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: []
});
});
},
查看此完整教程,以便您更好地理解。 Angular 5 Datatables using JSON data with rerender
我正在开发一个以 PHP 作为后端的 Angular5 项目。我被困在这个水平上。 以下是我的代码:
this.dtOptions = {
pagingType: 'full_numbers',
pageLength: 10,
order: [0, 'desc'],
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.http
.post<DataTablesResponse>(
'http://localhost/api/webapi/',
dataTablesParameters,{ headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'token'
})}
).subscribe(resp => {
that.records = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: []
});
});
},
columns: [{ data: 'id' }, { data: 'name' }]
};
正如我在这段代码中观察到的,我正在发送数据表的默认参数 "dataTablesParameters"。如何添加我的自定义参数,如 (entryid) 和 "dataTablesParameters"?
请指导。
我认为无法按如下方式创建父对象:
ParentObj = { dataTablesParameters: _dataTablesParameters , entryid:_entryid }
编辑:所以你的代码看起来像这样
declare interface parentObj : { dataTablesParameters: any , entryid: any }
this.ParentObj = { dataTablesParameters: _dataTablesParameters , entryid:_entryid }
this.dtOptions = {
pagingType: 'full_numbers',
pageLength: 10,
order: [0, 'desc'],
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.http
.post<DataTablesResponse>(
'http://localhost/api/webapi/',
parentObj,{ headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'token'
})}
).subscribe(resp => {
that.records = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: []
});
});
},
columns: [{ data: 'id' }, { data: 'name' }]
};
发送 parentObj 而不是您的 http 请求中的 dataTablesParameter。
您只需像这样声明对象:
userData = { token: '', entryid : '' };
并且在调用 ajax 时,您应该使用 Object.assign 合并两个对象,例如:
Object.assign(dataTablesParameters,this.userData)
ajax: (dataTablesParameters:any, callback) => {
that.http
.post<DataTablesResponse>(
'http://localhost/api/webapi/',Object.assign(dataTablesParameters,this.userData),{}).subscribe(resp => {
that.records = resp.data;
console.log(resp);
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: []
});
});
},
查看此完整教程,以便您更好地理解。 Angular 5 Datatables using JSON data with rerender