【问题标题】:Filtering in Angular 2Angular 2 中的过滤
【发布时间】:2018-06-14 14:43:33
【问题描述】:

我目前正在学习 Pluralsight 上的一个老式 Angular 教程,并被告知输入以下代码

    performFilter(filterBy: string): IProduct[] {
    filterBy = filterBy.toLocaleLowerCase;
    return this.products.filter((product: IProduct) => product.productName.toLocaleLowerCase.indexOf(filterBy) !== -1);
}

应该过滤用户搜索。 (即他们键入字母“a”,只会显示包含该字母的结果。但是,我遇到了一些错误:

1: [ts] 类型 '() => string' 不可分配给类型 'string'。 (参数) filterBy: 字符串

2: [ts] 属性 'indexOf' 不存在于类型 '() => string' 上。 任何

我是 typescript 的新手,不确定是否应该转换这些变量或完全不同的东西。

【问题讨论】:

  • 请向我展示您的 IProduct 模态,因为这是问题,而您必须将 productName 作为字符串提及并简单地使用 toLowerCase()。

标签: javascript c# angular typescript filter


【解决方案1】:

toLocaleLowerCase是一个函数,你应该调用它,想法是获取原始字符串的小写版本:

interface IProduct { productName: string}
function performFilter(filterBy: string): IProduct[] {
    filterBy = filterBy.toLocaleLowerCase();
    return this.products.filter((product: IProduct) => product.productName.toLocaleLowerCase().indexOf(filterBy) !== -1);
}

【讨论】:

    【解决方案2】:

    你可以试试这个解决方案使用toLowerCase()

    performFilter(filterBy: string): IProduct[] {
        filterBy = filterBy.toLowerCase();
        return this.products.filter((product: IProduct) => product.productName.toLowerCase().indexOf(filterBy) !== -1);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 2016-10-16
      • 2018-01-01
      • 2018-01-27
      • 2020-08-31
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2017-10-12
      相关资源
      最近更新 更多