无法在Angular ng2-smart-table中搜索自定义渲染单元格

时间:2017-08-05 18:01:14

标签: angular tablecell ng2-smart-table

渲染" custom"的一个副作用。字段是全局搜索不再能够在其中工作。我相信这是因为单元格以json对象开始,然后我在该对象中只渲染一个字符串。因此,全球搜索无法进入。我基本上循环遍历对象列表,然后显示该对象的单个属性(字符串)以显示在该单元格中。不幸的是,所有这些文本对全局搜索都是不可见的。有没有办法可以将自定义渲染文本添加到全局搜索?我已经包含了渲染组件的代码:

@Component({
    selector: 'scope-renderer',
    template: `
        <ul class="list-unstyled">
            <li *ngFor="let scope of scopes">
                {{ scope.displayName }}
            </li>
        </ul>
    `
})
export class ScopeRendererComponent implements OnInit {
    @Input() rowData: any;

    scopes: Array<Scope>;

    ngOnInit() {
        this.scopes = this.rowData.scopes;
    }
}

class Scope {
    name: string;
    displayName: string;
    description: string;
    required: boolean;
    emphasize: boolean;
    showInDiscoveryDocument: boolean;
}

1 个答案:

答案 0 :(得分:1)

这里有一个错误:https://github.com/akveo/ng2-smart-table/blob/master/src/ng2-smart-table/lib/data-source/local/local.filter.ts#L11将“”作为单元格值提供给任何非基本属性的filterFunction。

我所做的就是攻击组件(上面的链接),如下所示:

return data.filter(function (el) {
    //var value = typeof el[field] === 'undefined' || el[field] === null ? '' : el[field];
    return filter.call(null, el, search);
});

并将整个元素传递给过滤器。然后,我在filterFunction中拥有该项的完整内容。

filterFunction(el?: any, search?: string): boolean {          
  return true;
}

对我来说效果很好。