toLowerCase在类型上不存在。打字稿

时间:2018-02-07 13:52:10

标签: angular typescript filter autocomplete angular-material

我想为自动完成素材创建过滤器。

我的模特:

 export class Country {
      country_id: number;
      name: string;
       }

调用webmethod ws

 this.ws.AllCountry().subscribe(
      countryes => {
        this.countryes = countryes.map((country) => {
          return new Country(country);
        });
      }
    );

创建此过滤器,但不起作用:

filterStates(val: string) {
    if (val) {
      let filterValue = val.toLowerCase();//toLowerCase does not exist on type Country.
      return this.countryes.filter(name => name.toLowerCase().startsWith(filterValue));
    }
    return this.countryes;
  }

你能告诉我任何解决方案吗?

谢谢

3 个答案:

答案 0 :(得分:6)

我认为您的错误发生在过滤器行上,因为您在toLowerCase对象本身上调用了Country。试试这个:

filterStates(val: string) {
    if (val) {
      let filterValue = val.toLowerCase();

      // the below line is the change
      return this.countryes.filter(country => country.name.toLowerCase().startsWith(filterValue));
    }
    return this.countryes;
  }

答案 1 :(得分:2)

    filterStates(val: string) {
    if (val) {
      let filterValue = val.toLowerCase();//toLowerCase does not exist on type Country.
      return this.countryes.filter(item => item.name.toLowerCase().startsWith(filterValue));
    }
    return this.countryes;
  }

您使用的是国家/地区对象而不是名称属性。

答案 2 :(得分:0)

如果您在angular 2中使用jquery,请使用toString函数

$('#search').val().toString().toLowerCase()