2017-07-03 1 views
1

Je veux filtrer les données selon les hommes et les femmes avec un tuyau personnalisé dans le composant de employeemale.ts lors de l'utilisation des femmes dans la conduite personnalisée en boucle ngfor il montre les données selon féminin:angulaire 2 numéro Filer de conduite sur mesure

Works:

<ng-container *ngFor="let empLists of empList | filterdata:'female'"> 

mais quand j'utilise les hommes montre toutes les données JSON

ne fonctionne pas:

<ng-container *ngFor="let empLists of empList | filterdata:'male'"> 

Ceci est mon élément html

<div class="widget box"> 
    <div class="widget-header"> <h4><i class="fa fa-bars"></i> Female Employe Details</h4></div> 
</div> 

Lorsque je filtre les données selon femme, il est:

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

@Pipe({ 
    name: 'filterdata' 
}) 
export class FilterdataPipe implements PipeTransform { 

    transform(empList: Array<any>, arg: string): any { 
    debugger 
    return empList.filter(function(empLists){ 
     //console.log(empLists) 
      return empLists.gender.toLowerCase().includes(arg.toLowerCase()); 
    }) 
    } 

} 
<div class="widget-content"> 
<table class="table table-bordered"> 
    <thead> 
    <tr> 
     <th>#employee ID</th> 
     <th>Name</th> 
     <th>Gender</th> 
    </tr> 
    </thead> 

     <ng-container *ngFor="let empLists of empList | filterdata:'male'"> 
<tr> 
     <th>{{empLists.id}}</th> 
     <th>{{empLists.fullName}}</th> 
     <th>{{empLists.gender}}</th> 

    </tr> 
    </ng-container> 
    </tbody> 
</table> 

Ceci est ma pipe sur mesure filterdata.pipe.ts

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

@Pipe({ 
    name: 'filterdata' 
}) 
export class FilterdataPipe implements PipeTransform { 

    transform(empList: Array<any>, arg: string): any { 
    debugger 
    return empList.filter(function(empLists){ 
     //console.log(empLists) 
      return empLists.gender.toLowerCase().includes(arg.toLowerCase()); 
    }) 
    } 
} 
+0

oui, mâle est inclus dans 'femelle retour empLists.gender.toLowerCase() comprend (arg.toLowerCase());.' –

+0

complète devinez, mais pourrait-il être lié au fait que le mot "mâle" apparaît dans la chaîne "femelle"? – DaveyDaveDave

Répondre

1

utilisent simplement l'égalité au lieu d'inclure:

transform(empList: Array<any>, arg: string): any { 
return empList.filter(function(emp){ 
    //console.log(empLists) 
     return emp.gender.toLowerCase() === arg.toLowerCase(); 
}); 

L'utilisation comprennent échouera parce qu'il ya un « mâle » dans votre « féminin »

+0

Merci Cela fonctionne – Nitesh