i Think Your Requirement is Custom Filters in Data table.
Component.html
<form (ngSubmit)="filterById($event)">
<label>
First Name
<input type="text" name="first_name" id="first_name" />
</label>
<label>
Last Name
<input type="text" name="last_name" id="last_name"/>
<button class="btn btn-primary" type="submit">Search</button>
</form>
<br />
<table datatable [dtOptions]="dtOptions" class="row-border hover"></table>
Component.ts
export class DatatableComponent implements OnInit {
@ViewChild(DataTableDirective)
datatableElement: DataTableDirective;
private new_url = 'service_url';
Search$: Observable<Person>;
constructor(private personservice: PersonService, private httpClient: HttpClient) { }
send_data_service: any = {};
dtOptions: DataTables.Settings = {};
ngOnInit(): void {
this.dtOptions = {
ajax: this.new_url,
columns: [{
title: 'id',
data: 'id'
}, {
title: 'first_name',
data: 'first_name'
}, {
title: 'last_name',
data: 'last_name',
},
]
};
}
filterById(event: any) {
const first_name = event.target.first_name.value;
const last_name = event.target.last_name.value;
this.send_data_service = { 'first_name': first_name, 'last_name': last_name };
this.datatableElement.dtInstance.then((dtInstance: DataTables.Api) => {
this.personservice.searchData(this.send_data_service)
.subscribe(data =>
this.send_data_service = data);
dtInstance.search(first_name).draw();
}
}
You can implement custom filters in datatable.