首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有自定义过滤器的filterFunction

带有自定义过滤器的filterFunction
EN

Stack Overflow用户
提问于 2019-08-20 10:24:56
回答 1查看 1.9K关注 0票数 0

自定义筛选器组件不调用filterFunction方法。

我尝试在自定义组件中将一个filterFunction分配给this.column。我尝试在filter对象的配置中设置filterFunction。

代码语言:javascript
复制
createdOn: {
        title: 'Created On',
        valuePrepareFunction: (createdOn) => {
          return this.datePipe.transform(createdOn.toDate(),'dd.MM.yy, 
                   HH:mm');
        },
        filterFunction: (value, query) => {
          value = this.datePipe.transform(value.toDate(), 'dd.MM.yy');
          return value.indexOf(query) >= 0;
        },
        filter: {
          type: 'custom',
          component: DateFilterComponent
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2019-08-30 13:04:42

这是我关于按日期筛选的解决方案:

代码语言:javascript
复制
settings = {
    columns: {
        createDatetime: {
            title: 'Date Submitted',
            filter: {
                type: 'custom',
                component: DateFilterComponent,
            },
            valuePrepareFunction: (created) => {
                return this.datePipe.transform(new Date(created), 'MM/dd/yyyy');
            },
        }
    }
};

<ng2-smart-table [settings]="settings" [source]="..."></ng2-smart-table>

别忘了:类型:过滤器中的“自定义”

和DateFilterComponent组件:

代码语言:javascript
复制
import { Component, OnInit, OnChanges, SimpleChanges } from '@angular/core';
import { FormControl } from '@angular/forms';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/skip';
import { DefaultFilter } from 'ng2-smart-table';
import { debounceTime, distinctUntilChanged, skip } from 'rxjs/operators';

@Component({
    selector: 'date-filter',
    template: `<input [formControl]="inputControl" class="form-control" type="date" />`
})
export class DateFilterComponent extends DefaultFilter implements OnInit, OnChanges {
    inputControl = new FormControl('');

    constructor() {
        super();
    }

    ngOnInit() {
        this.inputControl.valueChanges
            .pipe(
                distinctUntilChanged(),
                debounceTime(this.delay),
            )
            .subscribe((value: number) => {
                this.query = value !== null ? this.inputControl.value.toString() : '';
                this.setFilter();
            });
    }

    ngOnChanges(changes: SimpleChanges) {
        if (changes.query) {
            this.query = changes.query.currentValue;
            this.inputControl.setValue(this.query);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57571563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档