导入不使用Angular2自定义管道

时间:2017-01-11 19:14:43

标签: javascript angular typescript

这是自定义管道:

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

    @Pipe({
        name: 'gridColumnFilter'
        })

    @Injectable()
    export class GridColumnFilter implements PipeTransform {
        transform(columns: any, args: any[], header: string): any {
            return columns.find(columns.find(x => x.header == header))
    }
    }

    @NgModule({
        declarations: [
            GridColumnFilter
        ],
        exports: [
            GridColumnFilter
        ]
    })
    export class GridColumnFilterModule { }

以下是我要导入的模块:

import { GridColumnFilter } from '../../../pipes/grid-column-filter';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

@NgModule({
        declarations: [GridColumnFilter],
        imports: [CommonModule, NgModule, CommonModule],
        exports: []
    })

    export class DigitalLinksModule{ }

这是html:

<p-column *ngFor="let col of viewState.parameterGridOptions.cols | GridColumnFilter:viewState.parameterGridOptions.cols:col.header" [field]="col.field" [header]="col.header" [sortable]="col.sortable"></p-column>

我收到错误:

The pipe 'GridColumnFilter' could not be found ("
<p-column *ngFor="let[ERROR ->] col of viewState.parameterGridOptions.cols | GridColumnFilter:viewState.parameterGridOptions.cols:co")

尚未找到解决方案。提前谢谢。

1 个答案:

答案 0 :(得分:0)

评论re:拼写错误,管道名称区分大小写。

而不是GridColumnFilterModule,您可能需要考虑将所有管道放在共享模块中,如Angular Modules上的doco中所述,然后将该共享模块导入DigitalLinksModule(以及任何其他需要管道的模块) )。

我认为自定义管道不需要标记为@Injectable(至少我以前没见过)。