2017-05-16 4 views
1

J'ai essayé de construire un filtre Pipe pour mon projet, qui filtre à travers un tableau de chaînes. Cela fonctionne, mais je reçois toujours une erreur. Je me demande pourquoi c'est? Je voudrais également demander s'il y a un moyen de rendre le filtre plus universel afin que je puisse l'utiliser pour d'autres chaînes.Angular2: FilterPipe: Impossible de lire la propriété 'filter' de undefined

Voici le tuyau:

import { Pipe, PipeTransform } from '@angular/core'; 
import {Afdelingen} from "../models"; 

@Pipe({ 
    name: 'filter' 
}) 
export class FilterPipe implements PipeTransform { 

    transform(afdeling:Afdelingen[]) { 
    return afdeling.filter(afd => afd.afdelingsNaam == 'pediatrie'); 
    } 
} 

Mon HTML était juste pour le test, mais ici il va:

<div *ngFor="let afd of afdeling | filter"> 
    {{afd.afdelingsNaam}} 

</div> 

J'ai aussi ajouté une image de sorte que vous pouvez le voir, il fonctionne, Pourtant, je reçois une erreur. Error

EDIT: tube de recherche universelle:

import { Pipe, PipeTransform } from '@angular/core'; 
import {Afdelingen} from "../models"; 

@Pipe({ 
    name: 'filter' 
}) 
export class FilterPipe implements PipeTransform { 

    transform(afdeling:Afdelingen[], value:string) { 
    if (!afdeling) 
     return afdeling; 
    return afdeling.filter(afd => afd.afdelingsNaam == value); 
    } 
} 
+0

La première fois que le filtre le tuyau est appelé, afdeling est probablement indéfini. Vous devez vérifier s'il y a de la valeur dans 'afdeling' dans votre pipe :) – Alex

Répondre

3

Vous pouvez ajouter cette vérification dans votre pipe:

transform(afdeling:Afdelingen[]) { 
    if (!afdeling) 
     return afdeling; 
    return afdeling.filter(afd => afd.afdelingsNaam == 'pediatrie'); 
} 

Alors vous vous débarrasser de casser des exceptions

+0

Merci, ceci l'a résolu. J'ai aussi pu faire une pipe plus universelle! –