【发布时间】:2019-01-10 09:49:11
【问题描述】:
我正在使用这个https://github.com/swimlane/ngx-datatable/blob/master/demo/basic/filter.component.ts 来帮助我在我的表中创建搜索。
我的目标是创建高级搜索:按性别和姓名值过滤
rows = [
{ name: 'Austin', gender: 'Male', company: 'Swimlane' },
{ name: 'Dany', gender: 'Male', company: 'KFC' },
{ name: 'Molly', gender: 'Female', company: 'Burger King' },
];
columns = [
{ prop: 'name' },
{ name: 'Gender' },
{ name: 'Company' }
];
@ViewChild(DatatableComponent) table: DatatableComponent;
temp=[]
constructor() {
this.temp = this.rows;
}
updateFilter(event) {
const val = event.target.value.toLowerCase();
const temp = this.temp.filter(function (d) {
return d.name.toLowerCase().indexOf(val) !== -1 || !val;
});
this.rows = temp;
}
updateFilter1(event) {
const val = event.target.value.toLowerCase();
const temp = this.temp.filter(function (d) {
return d.gender.toLowerCase().indexOf(val) !== -1 || !val;
});
this.rows = temp;
}
我只是复制我的搜索创建第二个按性别过滤的功能。但是,两种搜索都是分开工作的(消除了另一个的限制),我不知道如何解决它。
在这里你可以找到我的html:
<input
type='text'
style='padding:8px;margin:15px auto;width:30%;'
placeholder='Type to filter the name column...'
(keyup)='filterByName($event)'
/>
<input
type='text'
style='padding:8px;margin:15px auto;width:30%;'
placeholder='Type to filter the name column...'
(keyup)='filterByGender($event)'
/>
<ngx-datatable
#table
class='material'
[columns]="columns"
[columnMode]="'force'"
[headerHeight]="50"
[footerHeight]="50"
[rowHeight]="'auto'"
[limit]="10"
[rows]='rows'>
</ngx-datatable>
【问题讨论】:
-
您想要单独输入还是一个输入同时检查两者?
-
我更喜欢单独输入以允许我在多个列中创建搜索
-
好吧,很简单。在调用每个过滤器时,将其要过滤的值保存在顶部的某个变量中。然后,当它们运行时,它们还将过滤另一个最后运行的内容。让我知道这是否是一个不好的解释,我会写一些代码。
-
这很清楚,但我不知道如何创建这个变量来保持我的第一次搜索。我会试试的,如果你能给我一些代码,那就完美了。
-
好的,等我几分钟。
标签: angular ngx-datatable