カスタムパイプの作成

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 を作成します。

  1. ReversePipe の作成

    reverse.pipe.tsReversePipe クラスに @Pipe デコレーターを追加し、次の構成を指定します。

    @Pipe({
      name: 'reverse'
    })
  2. 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;
      }
    }
  3. テンプレートで ReversePipe を使用する

  4. パイプロジックを実装したら、最後のステップとしてテンプレートで使用します。app.ts でテンプレートにパイプを含め、コンポーネントのインポートに追加します。

    @Component({
      ...
      template: `Reverse Machine: {{ word | reverse }}`
      imports: [ReversePipe]
    })

これにて終了です。このアクティビティの完了、おめでとうございます。これでパイプの使い方と、独自のパイプを実装する方法がわかりました。