Angular 5 Filter自定义Filter Predicate

问题描述 投票:0回答:2

我正在尝试按多列过滤记录,在过滤器输入框中键入内容时出现一些错误。

在InputBox中键入内容时出现以下错误。

错误类型错误:无法在MatTableDataSource._filterData处的Array.filter()处的eval(table.es5.js:551)处的MatTableDataSource.myFilterPredicate [as filterPredicate](numbers.component.ts:191)处读取未定义的属性'toString'( table.es5.js:551)MapSubscriber.eval [as project](table.es5.js:512)at MapSubscriber._next(map.js:79)at MapSubscriber.Subscriber.next(Subscriber.js:95)at在InnerSubscriber.Snescriber.next(Subscriber.js:95)的InnerSubscriber._next(InnerSubscriber.js:25)上组合最新的Subscriber.notifyNext(combineLatest.js:133)

angular angular-filters
2个回答
2
投票

问题在于:

 data.NUMBERRANGEEND.toString().trim().toLowerCase().indexOf(searchString.NUMBERRANGEEND.toLowerCase()) !== -1

toString()期望在前面有一个参数 - 所以你需要调试你的data.NUMBERRANGEEND,因为它似乎没有包含任何要转换的整数。

为了确定出现问题的地方,你可以在它们被处理后/在从前端发送/请求之前调试后端中的对象属性。


1
投票

我遇到了同样的问题。无法在MatTableDataSource.myFilterPredicate中读取未定义的属性'toString'[as filterPredicate]这意味着您的mat表中可能有另一列完全为空,这就是它无法读取空字符串的原因。解决方案:尝试在空列中添加一些值或定义一个条件;如果列为空,则不要将其视为null(将其视为“”字符串)。

© www.soinside.com 2019 - 2024. All rights reserved.