Abd*_*naz 16 primeng angular angular5
我有一个primeng turbo-table组件.我需要在桌面上应用多个过滤器.
从父母那里我
myTable.doFilter(first_values);
myTable.doFilter(second_values);
一个接一个地 打电话
在子(turbo-table)组件上,实际过滤器的应用类似于
doFilter(...filter_values...){
this.pTable.filter(...filter_values...);
}
问题是第二个过滤器在第一个过滤器完成之前应用并导致意外结果.
上一次过滤完成后,如何调用过滤器.过滤器完成后会发出一个事件但我无法找到一种方法来利用它.
Parent.ts
fetchList(searchData) {
this.ratesTable.reset();
this.ratesDataSource = [];
this.programService.fetchList(searchData)
.then(
(response) => {
this.ratesDataSource = response.rates;
this.doTermFilter();
this.doLoanFilter();
})
.catch((error) => {
console.error("from ts" + error);
});
}
doTermFilter(){
this.doFilter({ filterValue: _termFilters, columnField: "COL1", filterMethod: "in" });
}
doLoanFilter(){
this.doFilter({ filterValue: _loanFilters, columnField: "COL7", filterMethod: "in" });
}
Run Code Online (Sandbox Code Playgroud)
child.ts(涡轮表)
doFilter(doFilterInput: { filterValue: any[], columnField: any, filterMethod: any }) {
this.pTable.filter(doFilterInput.filterValue, doFilterInput.columnField, doFilterInput.filterMethod);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢.谢谢
这是过滤器方法源代码:
filter(value, field, matchMode) {
if(this.filterTimeout) {
clearTimeout(this.filterTimeout);
}
if (!this.isFilterBlank(value)) {
this.filters[field] = { value: value, matchMode: matchMode };
} else if (this.filters[field]) {
delete this.filters[field];
}
this.filterTimeout = setTimeout(() => {
this._filter();
this.filterTimeout = null;
}, this.filterDelay);
}
Run Code Online (Sandbox Code Playgroud)
您可以看到他们正在使用超时,并且事件仅发出一次,因为之前的超时被取消,但如果没有完整的示例,总体情况尚不清楚。
链接:https://github.com/primefaces/primeng/blob/master/src/app/components/table/table.ts
归档时间: |
|
查看次数: |
512 次 |
最近记录: |