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 クイックインストールチュートリアル

推薦する

Vue での ElementUI の使用に関する詳細な説明

ログイン + セッションストレージエフェクト表示ログインに成功すると、ユーザー ID がフロントエン...

シームレスなカルーセルを実現するjQueryプラグイン

シームレス カルーセルは非常に一般的なエフェクトであり、ロジックを理解すれば非常に簡単です。効果は以...

HTMLでvueとel​​ement-uiを直接参照する方法

コードは次のようになります。 <!DOCTYPE html> <html> ...

ウェブサイトデザインにおいて非常に重要な概念であるdiv+floatの分析

ウェブサイトの構築では、HTML と CSS に関するさまざまな問題に常に遭遇します。ウェブサイト ...

CSS 画面サイズ適応実装例

CSS 画面サイズの適応を実現するには、まず CSS3 @media メディア クエリを導入する必要...

NGINXがウェブサイトのPV、UV、独立IPをカウントする方法の詳細な説明

Nginx: PV、UV、独立IPウェブサイトを作成する人なら誰でも、ウェブサイトのPV、UV、その...

Linux クラウド サーバー上に SFTP サーバーとイメージ サーバーを構築する方法

まず、SFTP プロトコルと FTP プロトコルの違いを理解してください。ここでは詳細には触れません...

Vueのライブ放送機能の詳しい説明

最近、会社でたまたま生放送をしていたのですが、今日は私が遭遇した落とし穴を記録します。会社のサーバー...

Vue.jsクラウドストレージで画像アップロード機能を実現

序文ヒント:以下はこの記事の主な内容です。以下のケースを参考にしてください。 1. オブジェクトスト...

Mapper SQL ステートメント フィールドとエンティティ クラス属性名の関係は何ですか?

背景: 1. データベースに通知テーブルがある あなたは見ることができますgmt_create、通知...

Docker はクラスター MongoDB 実装手順を構築します

序文会社の業務上のニーズにより、独自の MongoDB サービスを構築する予定です。MongoDB ...

MySQLデータベース入門:データベースバックアップ操作の詳細な説明

目次1. 単一データベースのバックアップ2. 圧縮バックアップ3. マルチデータベースバックアップ4...

Dockerコンテナにvimコマンドがない問題を解決する方法

問題を見つける今日、Docker コンテナ内のファイルを変更しようとしたところ、コンテナ内に vim...

MySQL Null は 5 つの問題を引き起こす可能性があります (すべて致命的)

目次1. カウントデータが失われる解決2. 明確なデータ損失3.データ損失を選択解決4. Nullポ...

HTMLで細い線のテーブルを作成する簡単な例

この細線の表を作成する方法については、Baidu で検索すると、表に対して border="...