Angular2,TypeError:el.toLowerCase不是自动完成过程中的函数

时间:2016-05-27 10:16:24

标签: autocomplete angular

当我尝试在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 = [];
 }
} 

4 个答案:

答案 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.的情况下可能无法识别它。如果这不起作用,请告诉我。