javascript - 过滤器不是自定义管道 Angular 2 中的函数

标签 javascript arrays angular angular2-template angular2-services

我是 Angular 2 的初学者。 我试图在 Angular 2 中创建用于搜索操作的自定义管道。 在尝试使用过滤功能来过滤数据对象时,我发现我的数据不支持过滤功能。

我的管道代码:

import {Pipe,PipeTransform} from '@angular/core'

@Pipe({
  name : 'GenderSetter'
})
export class SettingGenderPipe implements PipeTransform
{
   transform(Employees:any,EmpFind:any):any{

    if(EmpFind === undefined) return Employees;
    else {
      return Employees.filter(function(x){
        console.log(x.toLowerCase().includes(EmpFind.toLowerCase()));
        return x.toLowerCase().includes(EmpFind.toLowerCase())
      })
    }    
   }   
}

我的模板 html 文件:

<div style="text-align:center">
  <input type="text" id='txtsearch' [(ngModel)]="EmpFind"/>
  <table>    
    <thead>
      <td>Name</td>
      <td>Gender</td>
     <td>Salary</td>
   </thead>
    <tbody>
      <tr *ngFor='let x of Employees'>
            <td>{{x.Empname | GenderSetter : EmpFind}}</td>
            <td>{{x.gender}}</td>
            <td>{{x.salary}}</td>
      </tr>
    </tbody>
  </table>
</div>

我的组件代码:

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
Employees=[
  {Empname : 'Roshan',gender:1,salary:'70k' },
  {Empname : 'Ishita',gender:0,salary:'60k' },
  {Empname : 'Ritika',gender:0,salary:'50k' },
  {Empname : 'Girish',gender:1,salary:'40k' },
]
}

在控制台中,我收到以下错误: 错误类型错误:Employees.filter 不是函数。

最佳答案

问题是您将管道应用于 x.Empname,但是管道本身应该接受一个数组。将管道移至 ngFor:

  <tr *ngFor='let x of Employees | GenderSetter : EmpFind'>
        <td>{{x.Empname}}</td>
        <td>{{x.gender}}</td>
        <td>{{x.salary}}</td>
  </tr>

关于javascript - 过滤器不是自定义管道 Angular 2 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48752028/

相关文章:

javascript - 如何创建使用前缀作为参数的自定义方法

javascript - 返回输入数组的最大元素的函数

C++ 从 get 函数中访问和操作二维指针数组

javascript - Angular 2 *ngFor不显示数据

javascript - Angular 2、动态绑定(bind)属性名

javascript - navigator.language 在 app.js 中无法正确识别

javascript - 使用键盘箭头禁用元素滚动

javascript - 单击按钮时如何从其上方的文本框中获取文本

c - 如何从字符串中获取字符

angular - 为 Angular 应用程序缓存 Assets 文件夹中的静态文件(图像、pdf、png 等)?