検索

Angular の

Angular Pipes: A Comprehensive guide

パイプ は、基になるデータを変更せずにテンプレート内のデータを変換するために使用される単純な関数です。パイプは値を受け取り、それを処理し、フォーマットされた出力または変換された出力を返します。これらは、日付、数値、文字列、さらには配列やオブジェクトの書式設定にもよく使用されます。

基礎となるデータ モデルを変更せずに、ビュー内で直接、データをより読みやすい形式または関連性の高い形式で書式設定して表示できます。

パイプを使用すると、コードをクリーン読み取り可能に保つのに役立ちます。テンプレートやコンポーネントに複雑なロジックを記述する代わりに、そのロジックを パイプ にカプセル化して、アプリケーションのさまざまな部分で再利用できます。
たとえば、ユーザーが記事の公開日を確認できるブログ プラットフォームを開発しているとします。日付は、生の形式「2024–08–31T14:48:00.000Z」ではなく、「2024 年 8 月 31 日」などの使いやすい形式で表示する必要があります。 pipes を使用すると、コンポーネント内の日付を手動でフォーマットしてコードを煩雑にして読みやすさを低下させる代わりに、テンプレート内で Angular の組み込み DatePipe を使用できます。

<p>Published on: {{ article.publishDate | date:'longDate' }}</p>

パイプを適用するには、上記のコード例に示すように、テンプレート式内で pipe operator (|) を使用します。

内蔵パイプ

Angular には、一般的なタスク (DatePipe、UpperCasePipe、LowerCasePipe、CurrencyPipe、AsyncPipe、JsonPipe、 など) をカバーするいくつかの組み込みパイプが付属しています。これらの使用方法を知ることで、コードをよりクリーンかつ効率的にすることができます。

例:

<pre class="brush:php;toolbar:false">{{ user | json }}

Price: {{ product.price | currency:'USD' }}

{{ user.name | uppercase }}

パラメータ化されたパイプ

多くの Angular パイプ は、動作をカスタマイズするためのパラメーターを受け取ります。

パラメータを指​​定するには、パイプ名の後にコロン (:) とパラメータ値

を続けます。

一部の パイプ は、追加のコロンで区切られた複数のパラメータを受け入れます。

パラメータは、オプションまたは必須にすることができます。通貨をフォーマットし、パラメータとして通貨タイプを指定する必要があるカスタム パイプがあるとします。このパラメータが指定されていない場合、パイプは値を正しくフォーマットできない可能性があります。

<p>The product price is {{ price | customCurrency:'USD' }}</p>

1.パラメータ付きの DatePipe

<p>Published on: {{ article.publishDate | date:'MMMM d, y, h:mm:ss a' }}</p>

これにより、日付が「2024 年 8 月 31 日、午後 2:48:00」としてフォーマットされます。

2.パラメータ付き CurrencyPipe

<p>Price: {{ product.price | currency:'EUR':'symbol-narrow':'1.0-0' }}</p>

これにより、価格が「€1,235」としてフォーマットされます (小数点以下は四捨五入されます)。

チェーンパイプ

複数のパイプをチェーンして複雑な変換を実現できます。

<p>{{ article.content | slice:0:100 | uppercase }}</p>

これにより、article.content の最初の 100 文字がスライスされ、大文字に変換されます。

カスタムパイプ

場合によっては、組み込みパイプが特定のニーズを満たさない場合があり、特定のロジックを処理するためにカスタム パイプを作成する必要があります。その方法は次のとおりです。

例:

次の例では、「こんにちは、アリス!」のような挨拶を名前に追加するパイプを作成します

次のコマンドを実行して新しいパイプを生成します:

ng generate pipe greet

次に、src/app ディレクトリにあるgreet.pipe.ts ファイルを変更して、パイプ ロジックを含めましょう。

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

@Pipe({
  name: 'greet',  // This is the name you'll use in the template
  standalone: true,
})
export class GreetPipe implements PipeTransform {
  transform(value: string): string {
    return `Hello, ${value}!`;  // This is the transformation logic
  }
}

パイプの準備ができたら、それをテンプレートで使用できます。

<p>{{ 'Alice' | greet }}</p>

パラメータ化されたカスタムパイプの作成

次に、挨拶をカスタマイズできるようにして、「こんにちは、アリス!」と言うことができるようにします。または「ようこそ、アリス!」パイプに何を渡すかによって異なります。

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

@Pipe({
  name: 'greet',  // Same pipe name as before
  standalone: true,
})
export class GreetPipe implements PipeTransform {
  transform(value: string, greeting: string = 'Hello'): string {
    return `${greeting}, ${value}!`;  // Now it uses the greeting passed in
  }
}

transform メソッドには 2 番目のパラメーター、greeting が追加されました。挨拶が指定されていない場合は、デフォルトで「Hello」が使用されます。

テンプレート内の挨拶をカスタマイズできるようになりました。

<p>{{ 'Alice' | greet:'Hi' }}</p>
<p>{{ 'Bob' | greet:'Welcome' }}</p>

純粋なパイプと不純なパイプ

1.ピュアパイプ
デフォルトでは、すべての Angular パイプは純粋です。 純粋なパイプ は、入力データ (数値や文字列など) またはオブジェクトへの参照 (配列や日付など) が変更された場合にのみ呼び出されます。これにより、パイプが不必要に実行されなくなるため、純粋なパイプが効率的かつ高パフォーマンスになります。

ただし、項目の配列など、データがより複雑な場合、配列への参照が変更されていないため、Angular は配列内の変更 (新しい項目の追加など) に気付かない可能性があります。

不要な再レンダリングを避け、パフォーマンスを維持するために、必要な場合を除き、パイプを純粋に保ってください。

例:

@Pipe({
  name: "onSale",
  standalone: true,
  pure: true,
})
export class OnSalePipe implements PipeTransform {
  transform(items: Item[]): Item[] {
    return items.filter((item) => item.isOnSale);
  }
}

テンプレート内:


  • {{ item.name }} - {{ item.price | formatPrice }}

If you add a new item to the items array that’s on sale, you might expect it to show up in the list. But if you simply push the new item into the array, the list might not update because the array reference hasn’t changed.

2. Impure Pipes

An impure pipe, on the other hand, is called every time Angular performs a change detection cycle. However, because they run so often, they can slow down your app.

Example:

@Pipe({
  name: "onSaleImpure",
  standalone: true,
  pure: false,
})
export class OnSaleImpurePipe implements PipeTransform {
  transform(items: Item[]): Item[] {
    return items.filter((item) => item.isOnSale);
  }
}

In your template:


  • {{ item.name }} - {{ item.price | formatPrice }}

Now, when you add a new item, the pipe will notice the change and update the list.

Best Practices for Using Pipes

  1. Keep Pipes Simple. Avoid Heavy Computations in Pipes

  2. Name Pipes Clearly and Descriptively

  3. Keep Pipes Focused on a Single Responsibility

  4. Avoid Impure Pipes When Possible

  5. Test Custom Pipes Thoroughly

Conclusion

Angular pipes streamline data transformation tasks, making your code more modular, reusable, and maintainable. They help to enforce consistency across the application and improve the readability of your templates, which is crucial for developing scalable and maintainable applications.

以上がAngular Pipes: 包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptはCで書かれていますか?証拠を調べるJavaScriptはCで書かれていますか?証拠を調べるApr 25, 2025 am 12:15 AM

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

JavaScript通訳者とコンパイラにおけるC/Cの役割JavaScript通訳者とコンパイラにおけるC/Cの役割Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません