2016-06-29 2 views
4

J'ai fait un tube comme suit:Angular2 tuyau ne peut pas trouver le nom

import {Pipe, PipeTransform} from '@angular/core'; 
import { Radio } from '../../models/radio'; 
@Pipe({ 
    name: 'radioFilter' 
}) 
export class radioFilterPipe implements PipeTransform { 

    transform(value: Radio[], args: string[]): any { 

     let filter = args[0].toLocaleLowerCase(); 
     return filter ? value.filter(radio => radio.station.text.toLocaleLowerCase().indexOf(filter) != -1) : value; 
    } 
} 

et dans mon élément, j'ai ajouté le code suivant:

import { radioFilterPipe } from './grid.station.pipe'; 

pipes: [radioFilter], 

mais je reçois une erreur de compilation: erreur TS2304: Impossible de trouver le nom 'radioFilter'. Qu'est-ce que je fais mal??

Répondre

9

Comme par angulaire 2 version finale, vous devez inclure Pipe, Component, Directive en declarations option NgModule métadonnées.

@NgModule({ 
    declarations: [MyDirective, MyComponent, radioFilterPipe ], 
    providers: [radioFilterPipe], //<-- Include pipe here if you want to use it in class as dependency 
    imports: [ AppModule] 
}) 

Tout en incluant le nom pipe dans le tableau pipes, il devrait être le nom de la classe radioFilterPipe

import { radioFilterPipe } from './grid.station.pipe'; 

@Component({ 
    .., 
    pipes: [radioFilterPipe ], 
    .. 
})