パイプ
Angular のテンプレートでは、いくつかのパイプ がビルトインで用意されています。 それらを用いて、表示時に文字列をフォーマットすることが可能になります。
例えば、"hello" という内容を、UpperCasePipe を使うことで、直ちに大文字に変換して "HELLO" とすることができます。
ビルトインでパイプが用意されている他、カスタムでパイプを作成することも可能です。
ここではビルトインのパイプの使い方をみてみましょう。
まずは動作例から示します。
コンポーネント内でプロパティを初期化します。
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
s: string;
s2: string;
d: Date;
n: number;
n2: number;
n3: number;
ngOnInit(){
this.s = "Hello";
this.s2 = "1234";
this.d = new Date(2017, 4, 1);
this.n = 1234.56;
this.n2 = 3.14159;
this.n3 = 7;
}
}
このように値を用意した上で、それぞれのパイプでの出力結果をみてみましょう。
uppercase / lowercase
<h2>Upper/Lower</h2>
<div>s= {{s|uppercase}}<div>
<div>s= {{s|lowercase}}</div>
以上で次のように表示されます。
lowercase で Hello の最初の H の文字も小文字になっています。
date
<h2>Date</h2>
<div>d= {{d}}</div>
<div>d= {{d|date}}</div>
<div>d= {{d|date:'shortDate'}}</div>
<div>d= {{d|date:'y-MM-dd'}}</div>
以上で次のように表示されました。
JavaScript の Date オブジェクトでの月の指定は 0 ベースです。従って、d は Date(2017, 4, 1) とあるので (4 月ではなく) 5 月です。
フォーマットの文字で 4 桁の年表示は YYYY ではなく y です。
currency
<h2>Currency</h2>
<div>n= {{n}}</div>
<div>n= {{n|currency}}</div>
<div>n= {{n|currency:'USD':true}}</div>
<div>n= {{n|currency:'JPY':true}}</div>
以上で次のように表示されました。
フォーマットを指定しないで currency パイプを使うと、デフォルトでアメリカドル (USD) 形式になります。
フォーマットは (通貨を表す3文字):(通貨記号を使用するかどうかを表す true/false) です。
number
<h2>Decimal</h2>
<div>n2= {{n2|number}}</div>
<div>n2= {{n2|number:'2.0-1'}}</div>
<div>n3= {{n3|number:'1.1-2'}}</div>
以上で次のように表示されました。
DecimalPipe というパイプなのですが、テンプレートでは number として記述します。
フォーマットの文字列を指定するときには、(整数部の最低の長さ).(少数部分の最低の長さ)-(少数部分の最大の長さ) として指定します。