2017-12-22 13 views
0

私のアプリには、いくつかの日付フィールドがあります。だから私はデータベースにタイムスタンプとして日付を送信する必要があります。私はモデル値を変更するカスタムパイプを書くつもりです。それは私の必要性に合っていますか?またはこのためにカスタムディレクティブを書く必要がありますか?角度2のパイプまたは指令ですか?それは最高のものですか?

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

@Pipe({name: 'capitalize'}) 
export class CapitalizePipe implements PipeTransform { 
    transform(value: string, args: string[]): any { 
    if (!value) return value; 

    return value.replace(/\w\S*/g, function(txt) { 
     return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); 
    }); 
    } 
} 
+0

私はあなたのケースを説明することをお勧めしたいです。 *データベースにタイムスタンプとして日付を送る必要がある* - 質問とは何が関係していますか?あなたはそれのためのパイプで日付を変更するつもりですか?指令にもパイプにも適していません。 – estus

+0

はい、私はdbにタイムスタンプを送ることができるように、ディレクティブまたはパイプでモデル値を変更しますが、実際の日付はユーザーに表示されるので、私はそうしようとしています – AhammadaliPK

答えて

0

私はあなたの質問を正しく理解しました。あなたは、たとえば、標準DatePipeを使用する(またはそれを拡張する)ことができ、変換のために

{{ dateField | date:'HH:mm:ss SSS'}} 
{{ dateField | date:'HHmmssSSS':'+0000'}} 
2

あなたはそれを後方に持っています。 Angularでは、テンプレートがに表示され、より適切な方法でデータが表示されます。彼らはあなたの実際のデータを変更するためのものではありません。

適切なカレンダーウィジェットを使用するには、ng-bootstrapライブラリ(Githubで見つけることができます)を使用することをおすすめします。モデルはタイムスタンプを返すように設定できます。


編集:コードでそれを呼び出す例を追加:

let name = new UserNamePipe().transform(user); 

https://stackoverflow.com/a/35159546/5885595

+0

パイプはテンプレートでのみ使用できますか? –

+0

通常、パイプはテンプレート用に予約する必要がありますが、TSファイルでも呼び出すのが便利なことがあります。それらが "トランスフォーム"と呼ばれるメソッドを持つ単純なクラスであると考えてください。例えば答えを見てください。 –

関連する問題