我正在尝试按多列过滤记录,在过滤器输入框中键入内容时遇到一些错误。
在InputBox中键入内容时出现以下错误。
错误TypeError:无法读取未定义的属性'toString' 在MatTableDataSource.myFilterPredicate [作为filterPredicate](numbers.component.ts:191) 在评估时(table.es5.js:551) 在Array.filter() 在MatTableDataSource._filterData(table.es5.js:551) 在MapSubscriber.eval [作为项目](table.es5.js:512) 在MapSubscriber._next(map.js:79) 在MapSubscriber.Subscriber.next(Subscriber.js:95) 在CombineLatestSubscriber.notifyNext(combineLatest.js:133) 在InnerSubscriber._next(InnerSubscriber.js:25) 在InnerSubscriber.Subscriber.next(Subscriber.js:95)
答案 0 :(得分:1)
问题出在这里:
data.NUMBERRANGEEND.toString().trim().toLowerCase().indexOf(searchString.NUMBERRANGEEND.toLowerCase()) !== -1
toString()
在前面需要一个参数-所以您需要调试data.NUMBERRANGEEND
,因为它似乎不包含任何要转换的整数。
要确定问题出在哪里,您可以在后端处理对象属性时/在它们从前端发送到/请求之前调试它们。
答案 1 :(得分:1)
我遇到了同样的问题。 无法读取MatTableDataSource.myFilterPredicate上未定义的属性'toString'[作为filterPredicate] 。这意味着您的Mat表中可能有另一列完全为空,这就是为什么它无法读取空字符串的原因。 解决方案:尝试在空列中添加一些值或定义一个条件,该条件为:如果column为空,则不要将其视为null(将其像字符串一样处理)。