2

angular2 +アプリにagグリッドを実装しました。フィルターは正常に機能しますが、一部のフィールドではカスタムフィルターが必要です。これらのフィールドは、たとえばメイン配列の直接フィールドではないためです

abc = [
    xyz_field,
    inner_parent_array: [{inner_field: 60}]
]

inner_field というフィールドでフィルター処理したいのですが、カスタム フィルターを使用してフィルター処理を行うことができません。

これは floatfiltercomponent のコードです

private params: IFilterParams;
private valueGetter: (rowNode: RowNode) => any;
public text: string = '';

@ViewChild('input', {read: ViewContainerRef}) public input;

agInit(params: IFilterParams): void {
    this.params = params;
    this.valueGetter = params.valueGetter;
    console.log(this.params);
}

isFilterActive(): boolean {
    return this.text !== null && this.text !== undefined && this.text !== '';
}

doesFilterPass(params: IDoesFilterPassParams): boolean {
    console.log(params.node);
    return this.text.toLowerCase()
        .split(" ")
        .every((filterWord) => {
            return this.valueGetter(params.node).toString().toLowerCase().indexOf(filterWord) >= 0;
        });
}

getModel(): any {
    return {value: this.text};
}

setModel(model: any): void {
    this.text = model ? model.value : '';
}

ngAfterViewInit(params: IAfterGuiAttachedParams): void {
    setTimeout(() => {
        this.input.element.nativeElement.focus();
    })
}

onChange(newValue): void {
    if (this.text !== newValue) {
        this.text = newValue;
        console.log(this.params);
        this.params.filterChangedCallback();
    }
}

しかし、エラーが発生します。 this.params.filterChangedCallback は関数ではありません。これを修正する方法がわかりません

フィルターは xyz_field では正常に機能しますが、inner_field では機能しません

ここに私がやりたいことのライブの例があります

https://plnkr.co/edit/euuPnjpQ2IwtbKRYTXIv?p=preview
4

1 に答える 1