过滤Angular 2

时间:2018-06-14 14:43:34

标签: javascript c# angular typescript filter

我目前正在关注Pluralsight上一个古老的Angular教程,并被告知要输入以下代码

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

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

1:[ts] Type'()=>字符串'不能指定为' string'。 (参数)filterBy:string

2:[ts] Property' indexOf'类型'()=>上不存在字符串&#39 ;. 任何

我是打字稿的新手,不知道我是否应该投射这些变量或完全不同的东西。

2 个答案:

答案 0 :(得分:0)

interface IProduct { productName: string} function performFilter(filterBy: string): IProduct[] { filterBy = filterBy.toLocaleLowerCase(); return this.products.filter((product: IProduct) => product.productName.toLocaleLowerCase().indexOf(filterBy) !== -1); } 是一个函数,你应该调用它,想法是获得原始字符串的小写版本:

const fs = require('fs');

const isAvailableToRead = file => {
  try {
    fs.accessSync(file, fs.constants.R_OK);
    return true;
  } catch (err) {
    return false;
  }
}

const readDirectory = path => {
  const files = fs.readdirSync(path);
  files.forEach(file => {
    if(isAvailableToRead(file)) {
      console.log(`Do some logic ${file}`);
    }
  });
}

readDirectory(__dirname);

答案 1 :(得分:0)

您可以使用toLowerCase()

尝试此解决方案
performFilter(filterBy: string): IProduct[] {
    filterBy = filterBy.toLowerCase();
    return this.products.filter((product: IProduct) => product.productName.toLowerCase().indexOf(filterBy) !== -1);
}