datatable - 如何在角度数据表中添加自定义搜索
问题描述
我想使用数据表实现自定义搜索。请建议在调用自定义ajax进行搜索后如何初始化数据表。我试图初始化 this.dtOptions 但什么也没发生
谢谢
import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpResponse } from '@angular/common/http';
import { DataTablesResponse } from '../datatables/datatables-response';
import { Person } from './person';
@Component({
selector: 'app-angular-way-server-side',
templateUrl: 'angular-way-server-side.component.html',
styleUrls: ['angular-way-server-side.component.css'],
})
export class AngularWayServerSideComponent implements OnInit {
dtOptions: DataTables.Settings = {};
persons: Person[];
constructor(private http: HttpClient) { }
ngOnInit(): void {
var that = this;
this.dtOptions = {
pagingType: 'full_numbers',
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.http
.post<DataTablesResponse>('/api/Persons', dataTablesParameters, {})
.subscribe(resp => {
that.persons = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: [],
});
});
},
columns: [
{ data: "id" },
{ data: "firstName" },
{ data: "lastName" },
],
};
}
}
解决方案
我们可以使用 DataTables.Api 重新初始化数据表,下面是代码
rerender(search): void {
this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => {
// Destroy the table first
dtInstance.destroy();
// Call the dtTrigger to rerender again
this.dtTrigger.next();
}).then(()=>{ this.ngOnInit();});
}
推荐阅读
- geolocation - 如何通过服务器端的 IP 地址估计用户位置?
- python - 如何使用列表推导替换字符串中的字符?
- php - keycloak登录后如何获取用户信息
- python - 为每 1000 的倍数重置 Pandas Cumsum
- command-line - dotnet——环境文档?
- grouping - 如何遍历 Group-Object 的结果
- django - docker-compose + django + redis - 连接到 127.0.0.1:6379 时出现错误 111。拒绝连接
- html - 我需要帮助查找该函数的名称
- python - 为什么这两个代码打印不同的东西?
- eiffel - 埃菲尔:百分比字符转换为字符串