1

角2を使用して例外フリーの日付を取得しています。そのような場合、サーバーから '0000-00-00'という日付が取得され、例外がスローされます。角2インポートDatePipeと変換が動作しない

{{"2016-05-11" | dateFormat:task_.date_format}} 

パイプコード -

import { Pipe, PipeTransform } from '@angular/core'; 
import { DatePipe } from '@angular/common'; 
import { TaskService } from '../providers/taskService'; 

@Pipe({name: 'dateFormat'}) 
export class DateFormatPipe implements PipeTransform{ 


    constructor(public taskService: TaskService,private datePipe: DatePipe){} 

    transform(value :any[],arg:any): any { 

     console.log("dateFormat value "+value+"\n arg "+arg); 

     let format_ = this.taskService.getDateFormate(arg); 
     console.log("format_ ",format_) 
     let formatted = this.datePipe.transform(value, format_); 
     console.log("formatted "+formatted); 
     // if (value == this.taskService.getDateFormate(arg)) { 
     return value; 
     // } 
    } 
} 

しかし、それは動作していない、私はちょうど場合、適切な日が続いそうでない場合は、選択されたすなわちYYYY-MM-DD、MM-DD-YYYYのようにして返すことをしたいです0000-00-00を返します。

+0

あなたは書式ではなく値を返しています。正しいフォーマットgettngがコンソールに記録されていますか? –

+0

私は実際にはエラーを出していることを知っているので、フォーマットしてみましたが、Unknow DatePipeを与えています。 –

+0

上記のコードを変更しましたか? –

答えて

1

をあまりよく見えない言語変換メソッドを使用します。

0

あなたのapp.moduleファイル(宣言配列)のブートストラップにあなたのパイプを含めましたか?

ステートメントのタイプミスをチェックしてください(フォーマットはフォーマットである必要があります) let format_ = this.taskService.getDateFormate(arg);この除き

、あなたがSafariや古いブラウザを使用している場合は、(ECMAScriptの国際化APIに

確認してくださいあなたの変数の命名規則を含める必要があり、ドキュメントに記載されているようにAngular2は、さらにit's own implementation of the Date pipe?を持っているあなたが認識していることですtask_は 'EN-US'

datePipeEn: DatePipe = new DatePipe('en-US'); 

のように変数の型を与え、忘れてはいけない...私の意見では)

+0

実際、私はすでにチェックしています。私はちょうど私がサーバーから "0000-00-00"を取得し、その時間 'date:yyyy-mm-dd'またはそれ以上の例外 "無効な時間"をスローする例外を無料にしたい。 –

+0

私はフォローしていました - http://stackoverflow.com/a/37859544/6547558&http://stackoverflow.com/a/35144872/6547558 –

+0

var datePipe:any = new DatePipe();スローエラー - 指定されたパラメータがコールターゲットのシグネチャと一致しません。どうして? –

関連する問題