2016-11-01 9 views
2

数値を取り、値がパラメータとして渡された場合は空の画面を表示するカスタムパイプを作成しようとしています。私は、Tour + Heroesの例をコピーして貼り付けてパイプファイルを作成し、ToHのようにAppModuleの宣言配列にパイプを追加しました。しかし、コードを実行すると、ページがロードされる前にエラーが発生します。AppModuleでカスタムパイプを宣言するときの角2エラー

"metadata_resolver.js:275 Uncaught Error: Unexpected value 'BlankIfPipe' declared by the module 'AppModule"

私は角度バージョン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

@peeskillet私はコピー+ペーストで吸うと信じています:(ありがとう、それはあなたが回答を投稿すれば受け入れます) –

答えて

3

の前にPipe({ name: 'blankIf' })がありません。それがなければ、デコレータのように扱われず、必要なパイプメタデータをクラスに追加しません。したがって、パイプをdeclarationsに追加しようとすると、パイプメタデータがないため、パイプとして認識されません。

+0

ありがとう! zone.js:388 Unhandled Promise拒否:テンプレート解析エラー: 'blankIf'パイプが見つかりませんでした –

+0

それを使用するモジュールで宣言する必要があります。アプリケーションモジュール –

+0

から継承するOK、私は使用したモジュールに宣言を移動しますが、グローバルにするにはどうすればいいですか?DocsはAppModuleで宣言しています(実際にはSharedModuleを使用しますが、 ) –

関連する問題