为什么对象数组中的过滤器不适用于打字稿

时间:2018-01-08 19:23:24

标签: javascript angular typescript

我有这个方法:

  pesquisar(): void {
    console.log(this.razaoSocial);

    if (this.razaoSocial || this.cnpj) {
      this.empresaDataSource = EMPRESAS.filter(empresa => {
        empresa.razaoSocial.indexOf(this.razaoSocial) > -1
      });
    } else {
      this.empresaDataSource = EMPRESAS;
    }

    console.log(this.empresaDataSource);
  }

razaoSocialcnpj是绑定变量ngModel 我的数组EMPRESA有两个对象:

export const EMPRESAS:Empresa[]=[
    {id:1, razaoSocial:'Ciclo Cairu', cnpj:'12345678912345'},
    {id:2, razaoSocial:'Industria', cnpj:'789456123456132'}
];

但我应用过滤器,例如:Indus  在html字段中,预计对象Industria已在empresaDataSource中过滤,但不是。

控制台中的输出日志是:

> Indus
> []

我的错误在哪里?

1 个答案:

答案 0 :(得分:5)

你以错误的方式使用箭头功能。如果你添加花括号,它就像一个函数体,所以你必须在其中添加返回。

this.empresaDataSource = EMPRESAS.filter(empresa => {
    return empresa.razaoSocial.indexOf(this.razaoSocial) > -1
});

this.empresaDataSource = EMPRESAS.filter(empresa => empresa.razaoSocial.indexOf(this.razaoSocial) > -1);