使用angular2的ag-grid外部过滤器

Jas*_*son 7 ag-grid angular

我想用angular2在ag-grid上实现外部过滤.

github上的ag-grid 示例似乎没有实现外部过滤器,类似的问题尚未得到解答.有没有办法在带有angular2的ag-grid中实现外部过滤器?

我有以下内容:

模板:

<input (keyup)="updateFilters($event)" name="filterAgreementNumber" #filterAgreementNumber/>

<ag-grid-ng2 #agGrid
         style="width: 100%;"
         [style.height.px]="height"
         class="ag-fresh"
         [gridOptions]="gridOptions"
         [rowData]="promises"
         (window:resize)="onResize($event)">
Run Code Online (Sandbox Code Playgroud)

零件:

export class PromisesListComponent {
    private gridOptions: GridOptions;
    private promises: Promise[];
    filterAgreementNumber = '';

    constructor(private promisesService: PromisesService) {
        this.gridOptions = {
            rowData: this.promises,
            columnDefs: this.createColumnDefs(),
            enableColResize: true,
            enableSorting: true,
            enableFilter: true,
            isExternalFilterPresent: this.externalFilterPresent,
            doesExternalFilterPass: this.externalFilterPass,            
    }

    updateFilters(event: any) {
        this.filterAgreementNumber = event.target.value; //correctly assigns property
        this.gridOptions.api.onFilterChanged();
    }

    externalFilterPass(node: any) {
        console.log(this.getFilterAgreementNumber); //undefined
        if (this.filterAgreementNumber && this.filterAgreementNumber.length > 0)
            if (node.data.AgreementCode.indexOf(this.filterAgreementNumber) === -1)
            return false;

        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,thisexternalFilterPass引用ag-grid节点时,我无法访问class属性.

Mat*_*nea 13

在构造函数中,而不是

this.gridOptions = {
   ...
   isExternalFilterPresent: this.externalFilterPresent,
   doesExternalFilterPass: this.externalFilterPass
}
Run Code Online (Sandbox Code Playgroud)

尝试

this.gridOptions = {
   ...
   isExternalFilterPresent: this.externalFilterPresent.bind(this),
   doesExternalFilterPass: this.externalFilterPass.bind(this)
}
Run Code Online (Sandbox Code Playgroud)

现在可以从ag-grid方法中访问组件上下文,这this将是您所期望的.

来源:https://stackoverflow.com/a/41965934/6432429