当我尝试在angular2中集成自动完成时,我得到了TypeError,即 el.toLowerCase不是一个函数。
filter() {
if (this.query !== ""){
this.filteredList = this.names.filter(function(el){
return el.toLowerCase().indexOf(this.query.toLowerCase()) > -1;
}.bind(this));
}else{
this.filteredList = [];
}
}
答案 0 :(得分:8)
试试return el.toString().toLowerCase().indexOf(this.query.toLowerCase()) > -1;
。如果参数el
不是字符串,则toLowerCase()
函数不会对其进行处理。
答案 1 :(得分:0)
试试这个..它为我工作..
filter(event: any) {
if (this.query != "") {
this.FilteredApplicationNames = this.ApplicationNames.filter(function (el) {
return el.toString().toLowerCase().indexOf(this.query.toLowerCase()) > -1;
}.bind(this));
} else {
this.FilteredApplicationNames = [];
}
}
答案 2 :(得分:0)
您可以使用
return !input || (el ? ('' + el).toLowerCase().indexOf(input) !== -1 : false);
这是有效的,因为使用el
将对象'' + el
强制转换为字符串。由于它现在是一个字符串对象,我们可以使用toLowerCase()
函数。
答案 3 :(得分:-1)
试试this.el.toLowerCase()
。如果传入的参数el
是类的属性,则在它前面没有this.
的情况下可能无法识别它。如果这不起作用,请告诉我。