Angularでデータ変換のニーズに合わせてカスタムパイプを作成できます。
NOTE: 詳しくは、カスタムパイプの作成についての詳細ガイドをご覧ください。
このアクティビティでは、カスタムパイプを作成してテンプレートで使用します。
パイプは @Pipe デコレーターを付けたTypeScriptクラスです。例を挙げます。
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({
name: 'star',
})
export class StarPipe implements PipeTransform {
transform(value: string): string {
return `⭐️ ${value} ⭐️`;
}
}
StarPipe は文字列値を受け取り、その文字列を星で囲んだものを返します。以下の点に注意してください。
@Pipeデコレーターの構成のnameは、テンプレートで使用される名前です。transform関数は、ロジックを記述する場所です。
では、実際に試してみましょう。ReversePipe を作成します。
-
ReversePipeの作成reverse.pipe.tsでReversePipeクラスに@Pipeデコレーターを追加し、次の構成を指定します。@Pipe({ name: 'reverse' }) -
transform関数の実装これで、
ReversePipeクラスはパイプになります。transform関数を更新して、反転ロジックを追加します。export class ReversePipe implements PipeTransform { transform(value: string): string { let reverse = ''; for (let i = value.length - 1; i >= 0; i--) { reverse += value[i]; } return reverse; } } -
テンプレートで
ReversePipeを使用する
パイプロジックを実装したら、最後のステップとしてテンプレートで使用します。app.ts でテンプレートにパイプを含め、コンポーネントのインポートに追加します。
@Component({
...
template: `Reverse Machine: {{ word | reverse }}`
imports: [ReversePipe]
})
これにて終了です。このアクティビティの完了、おめでとうございます。これでパイプの使い方と、独自のパイプを実装する方法がわかりました。