2016-06-29 1 views
4

Я сделал ТРУБЫ следующим:Angular2 труба не может найти имя

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; 
    } 
} 

и в моем компоненте я добавил следующий код:

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

pipes: [radioFilter], 

, но я получаю ошибку компиляции: ошибка TS2304: Не удается найти имя «radioFilter». Что я делаю не так??

ответ

9

Согласно Угловое 2 окончательного освобождения, вы должны включить Pipe, Component, Directive в declarations опции NgModule метаданных.

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

Хотя включая pipe имя в pipes массив, это должно быть имя класса radioFilterPipe

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

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