Angularデータバインディングとその実装の詳細な説明

Angularデータバインディングとその実装の詳細な説明

序文

Web 開発では、モデルとビュー間のデータ同期が必要です。これらのモデルには基本的にデータ値が含まれ、ビューはユーザーが見るものを処理します。したがって、これが Angular でどのように行われるのか疑問に思っている場合は、Angular データ バインディングに関するこの記事が役立ちます。

ここで議論されるトピックは以下の通りです。

  • データ バインディングとは何ですか?
  • Angular におけるデータバインディングの種類
  • 一方向データバインディング補間プロパティバインディングイベントバインディング
  • 双方向データバインディング

データバインディングとは何ですか?

データ バインディングは、アプリケーション UI またはユーザー インターフェイスをモデルにバインドするメカニズムです。データ バインディングを使用すると、ユーザーはブラウザーを使用して Web サイト上の要素を操作できるようになります。したがって、何らかの変数が変更されるたびに、その特定の変更がドキュメント オブジェクト モデル (DOM) に反映される必要があります。

Angular では、データ バインディングによってコンポーネントと DOM 間の相互作用が定義されます。データ バインディングは、AngularJS から最新の Angular 9 バージョンまで、すべての Angular バージョンの一部です。

Angular のデータバインディングの種類

Angular では、一方向と双方向の両方のデータ バインディングが可能です。一方向データ バインディングは、モデルを通じてビューを操作する単純なタイプのデータ バインディングです。つまり、Typescript コードに加えられた変更は、対応する HTML に反映されます。 Angular では、一方向のデータ バインディングは次のように実現されます。

  • 補間または文字列補間
  • プロパティバインディング
  • イベントバインディング

一方、双方向データ バインディングでは、モデルを使用してビューを更新したり、ビューを使用してモデルを更新したりできるように、データを同期できます。つまり、アプリケーションはコンポーネント クラスとそのテンプレート間で情報を共有できるようになります。

一方向データバインディング

一方向データ バインディングでは、データはモデルからビューへの一方向にのみ流れます。前述したように、Angular の一方向データ バインディングには、補間、プロパティ バインディング、イベント バインディングの 3 つのタイプがあります。

補間バインディング

補間バインディングは、TypeScript コードから (つまり、コンポーネントからビューへ) HTML 出力を返すために使用されます。ここでは、テンプレート式は二重中括弧内に指定されています。補間を使用すると、HTML 要素タグ間および属性割り当て内のテキストに文字列を追加できます。これらの文字列はテンプレート式を使用して評価されます。

例:

<h1>{{タイトル}}</h1>
 
<b>{{course}} を学ぶ
</b> Edureka と。
 
2 * 2 = {{2 * 2}}
 
<div><img src="{{画像}}"></div>

このコードの Typescript 部分は次のとおりです。

クラスAppComponentをエクスポートします。
  title = 'データバインディング';
  コース = '角度';
  image = 'ここにURLを貼り付けます'
}

出力:

コンポーネント属性は 2 つの中括弧の間に指定されます。 Angular は、コンポーネント プロパティを、そのコンポーネント プロパティに関連付けられた文字列値に置き換えます。必要に応じてさまざまな場所で使用できます。 Angular は補間をプロパティ バインディングに変換します。

Angular では、補間区切り文字を構成して、2 つの中括弧を任意のものに置き換えることもできます。これは、コンポーネント メタデータの補間オプションを使用して実行できます。

テンプレート式

テンプレート式は 2 つの中括弧で囲まれ、値を生成します。 Angular は式を評価し、特定の式を HTML 要素、コンポーネント、ディレクティブなどのバインディング ターゲットのプロパティに割り当てます。

注: 補間括弧内の 2*2 はテンプレート式です。

プロパティバインディング

プロパティ バインディングでは、値はコンポーネントのプロパティからターゲット要素のプロパティに流れます。したがって、プロパティ バインディングを使用して、ターゲット要素からデータを読み取ったり抽出したり、ターゲット要素に属するメソッドを呼び出したりすることはできません。要素によって発生したイベントは、この記事の後半で説明するイベント バインディングを通じて識別できます。

一般的に、プロパティ バインディングを使用して、コンポーネント プロパティ値を要素属性に設定すると言えます。

例:

<h1>プロパティバインディング</h1>
<div><img [src]="画像"></div>

上記の例では、image 要素の src 属性がコンポーネントの image プロパティにバインドされています。

プロパティバインディングと補間

気付いた方は、補間とプロパティ バインディングが同じ意味で使用されていることに気付くでしょう。以下の例のペアを見てみましょう。

<h2>補間</h2>
 
<div><img src="{{画像}}"></div>
 
<h2>プロパティバインディング</h2>
 
<div><img [src]="画像"></div>

要素属性を文字列以外のデータ値に設定する必要がある場合は、補間ではなく属性バインディングを使用する必要があることに注意してください。

イベントバインディング

イベント バインディング機能を使用すると、マウスの動き、キーの押下、クリックなどの特定のイベントをリッスンできます。 Angular では、等号 (=) の左側の通常の角括弧内にターゲット イベント名を指定し、閉じ引用符 ("") 内にテンプレート ステートメントを指定することで、イベント バインディングを実現できます。

例:

<div>
  <button (click)="goBack()">戻る</button>
</div>

上記の例では、「click」はターゲット イベントの名前であり、「goBack()」はテンプレートのステートメントです。

出力:

イベント バインディングが発生するたびに、Angular はターゲット イベントのイベント ハンドラーを設定します。特定のイベントが発生すると、テンプレート ステートメントがハンドラーによって実行されます。通常、レシーバーには、イベントに応答してアクションを実行するテンプレート ステートメントが含まれます。ここでは、バインディングはイベントに関する情報を伝えるために使用されます。これらの情報のデータ値には、イベント文字列、オブジェクトなどが含まれます。

双方向バインディング

Angular では双方向のデータ バインディングが可能なので、アプリケーションはコンポーネントからテンプレートへ、またはその逆の双方向でデータを共有できます。これにより、アプリケーション内に存在するモデルとビューが常に同期されます。双方向データ バインディングでは、要素のプロパティの設定と要素変更イベントのリッスンという 2 つの処理が実行されます。

双方向バインディングの構文は [()} です。ご覧のとおり、これはプロパティ バインディング構文 (つまり []) とイベント バインディング構文 () の組み合わせです。 Angular によれば、この構文は「箱に入ったバナナ」のようなものです。

例:

<label><b>名前:</b>
        <input [(ngModel)]="コース名" プレースホルダー="名前"/>
</ラベル>

このコードを実行すると、モデルまたはビューを変更すると、対応するビューとモデルも変更されることがわかります。下の画像を見てください。ビューからコース名が「Python」から「Pytho」に変更されています。

以上がAngularデータバインディングとその実装の詳細な説明です。Angularデータバインディングとその実装の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • angular4 ng-content の隠しコンテンツに関する簡単な説明
  • コンポーネントにコンテンツを埋め込むための Angular2 ng-content ディレクティブについての簡単な説明
  • DevUI で独自の Angular コンポーネント ライブラリを構築する方法
  • React、Angular、Vueの3つの主要なフロントエンド技術の詳細説明
  • Angular のパフォーマンス最適化: サードパーティ コンポーネントと遅延読み込みテクノロジー
  • Angularフレームワークのビュー抽象定義の詳細な説明
  • AngularJSにおける括弧の役割の詳細な説明
  • Angularコンポーネント投影の詳細な説明

<<:  Windows Server 2008 のサーバー パフォーマンス監視に関するチュートリアル

>>:  MySQL 8.0.12 クイックインストールチュートリアル

推薦する

MySQLの分離レベルとロックメカニズムの詳細な説明

目次簡単な説明: 1. 取引の4つの特徴2. 複数の同時トランザクションによって発生する問題3. ト...

Webデザイン: タイトルが完全に表示できない場合

<br />今日、新しくなった ChinaUI.com の Web サイトを見たのですが...

MySQL シリーズ 12 バックアップとリカバリ

目次チュートリアルシリーズ1. バックアップ戦略の説明1. バックアップの種類2. バックアップで考...

MySQLの認証コマンドgrantの使い方

この記事の例は MySQL 5.0 以降で実行されます。ユーザー権限を付与するための MySQL コ...

Vueデータ双方向バインディング実装方法

目次1. はじめに2. コードの実装2.1 目的分析2.2 実装プロセス2.2.1 エントリーコード...

選択/フォーカス時にすべてのオプションをリストする現在のより良い方法

開発中にこのような要件に遭遇したので、将来使用するために記録しました。需要背景キーボード ショートカ...

Linuxでディレクトリを効率的に切り替える方法

Linux でディレクトリを切り替えるとなると、誰もが間違いなくcdコマンドを思い浮かべるでしょう。...

Centos7 インストール mysql5.6.29 シェル スクリプト

この記事では、参考までにmysql5.6.29のシェルスクリプトを共有します。具体的な内容は次のとお...

高品質なウェブページのデザイン方法 高品質なウェブページ(画像とテキスト)のデザイン経験

オープンプラットフォームの増加に伴い、そこから派生するさまざまなアプリケーションサービスも増加傾向に...

Linux ユーザー グループと権限の概要

ユーザーグループLinux では、すべてのユーザーはグループに属する必要があり、Linux には次の...

WeChatアプレットのスクロールビューは、プルアップ時にデータの読み込みを重複させるソリューションを実装しています。

WeChat アプレットのスクロール ビューでは、プルアップして読み込むときにバグが多く発生します...

複数の Docker コンテナが同じポート番号を持たない場合の解決策

背景Dockerでは、同じイメージを使用して4つのコンテナを作成します。ネットワークはブリッジモード...

CSS3 で作成された背景グラデーションアニメーション効果

成果を達成する 実装コードhtml <h1 class="text-light&qu...

ウェブページのカラーマッチング例分析: 緑色のカラーマッチングウェブページ分析

<br />緑は黄色と青(寒色と暖色)の中間の色で、より穏やかな色です。そのため、緑は最...

vue3.0 sfcのセットアップの変更について簡単に説明します。

目次序文標準的なSFCの書き方スクリプト設定可変露出部品の取り付け小道具カスタムイベント要約する序文...