在AppModule上声明自定义管道时出现Angular 2错误

时间:2016-11-01 15:18:54

标签: angular

我正在尝试创建一个带有数字的自定义管道,如果等于作为参数传递的值,则显示一个空屏幕。我通过复制+粘贴Tour of Heroes示例创建了管道文件,然后在ToM提到的AppModule声明数组上添加了管道。但是,当我运行代码时,我在页面加载之前收到错误,说

  

" metadata_resolver.js:275未捕获错误:意外值   ' BlankIfPipe'由模块' AppModule"

声明

我使用的是Angular 2.0.2版。如果我更新到2.1,我会遇到各种各样的错误。

这是我的管道(虽然它似乎不是由它引起的,因为声明数组会引发错误):

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

Pipe({ name: 'blankIf' })
export class BlankIfPipe implements PipeTransform {
    transform(value: number, replaceIf: number): string {
        return value === replaceIf ? '' : value.toString();
    }
}

AppModule有这个(删除了一些导入):

import { LabTestService } from './lab-test/lab-test.service';
import { BlankIfPipe } from './blank-if.pipe';

@NgModule({
    declarations: [
        AppComponent,
        BlankIfPipe
    ],
    imports: [
        NgbModule.forRoot(),
        BrowserModule,
        FormsModule,
        CoreModule,
        LabTestModule
    ],
    providers: [ LabTestService ], // should this be moved to LabTestModule?
    bootstrap: [ AppComponent ]
})
export class AppModule { }

1 个答案:

答案 0 :(得分:3)

@之前你错过了Pipe({ name: 'blankIf' })。没有它,它不会被视为装饰器,也不会将所需的管道元数据添加到类中。因此,当您尝试将管道添加到declarations时,它不会被识别为管道,因为它没有管道元数据。