Angularコンポーネント投影の詳細な説明

Angularコンポーネント投影の詳細な説明

概要

実行時にコンポーネント テンプレートの内容を動的に変更します。ルーティングほど複雑ではなく、ビジネス ロジックのない単なる HTML です。

ngContent ディレクティブは、親コンポーネントのテンプレートの任意のフラグメントを子コンポーネントに投影します。

1. 簡単な例

1.サブコンポーネントの<ng-content>ディレクティブを使用して投影ポイントをマークします。

<div class="wrapper">
  <h2>私は子コンポーネントです</h2>
  <div>このdivは子コンポーネントで定義されています</div>
  <コンテンツ></コンテンツ> 
</div>

2. 親コンポーネントで、子コンポーネントに投影する投影ポイントのHTMLフラグメントを子コンポーネントのタグに記述します。

<div class="wrapper">
  <h2>私は親コンポーネントです</h2>
  <div>このdivは親コンポーネントで定義されています</div>
  <アプリの子2>
    <div>この div は子コンポーネントに投影される親コンポーネントです</div>
  </app-child2>
</div>

効果:

サブコンポーネントとスタイル:

.ラッパー{
    背景: ライトグリーン;
}

親コンポーネントとスタイル:

.ラッパー{
    背景: シアン;
} 

2. 複数の <ng-content> 投影ポイント

サブコンポーネント:

<div class="wrapper">
  <h2>私は子コンポーネントです</h2>
  <ng-content セレクター=".header"></ng-content>
  <div>このdivは子コンポーネントで定義されています</div>
  <ng-content セレクター=".footer"></ng-content> 
</div>

親コンポーネント:

<div class="wrapper">
  <h2>私は親コンポーネントです</h2>
  <div>このdivは親コンポーネントで定義されています</div>
  <アプリの子2>
    <div class="header">これはページ ヘッダーです。この div は子コンポーネントに投影される親コンポーネントです。タイトルは {{title} です。}</div>
    <div class="footer">これはフッターです。この div は子コンポーネントに投影される親コンポーネントです</div>
  </app-child2>
</div> 

ヘッダーとフッターは子コンポーネントに投影され、タイトルも投影されます。

親コンポーネント テンプレートの投影されたコンテンツ内の補間式は、コンテンツが子コンポーネントに投影されるにもかかわらず、親コンポーネントのプロパティのみをバインドできます。

3. Angular属性バインディングによるHTMLの挿入

親コンポーネント テンプレートに次の行を追加します。

<div [innerHTML]="divContent"></div>

親コンポーネントに divContent 属性を追加すると、コンテンツは HTML フラグメントになります。

divContent="<div>プロパティ バインディング innerHTML</div>";

効果

4. ngContentディレクティブと属性バインディングinnerHTMLの比較

[innerHTML] はブラウザ固有の API です。

ngContent ディレクティブはプラットフォームに依存しません。複数の投影ポイントをバインドできます。

ngContentディレクティブを優先する

上記は、Angularコンポーネントの投影についての詳細な説明です。Angularコンポーネントの投影の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

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

<<:  PHP スケジュールバックアップ MySQL および mysqldump 構文パラメータの詳細

>>:  一般的な Linux ツール vi/vim の完全版

推薦する

MySQL 5.7.18 インストーラーのインストール ダウンロード グラフィック チュートリアル

この記事では、MySQL 5.7.18インストーラーの詳細なインストールチュートリアルを参考までに記...

Vueプロジェクトでよく使われる実践的なスキルのまとめ

目次序文1. マルチレベルのデータとイベントの配信には$attrsと$listenersを使用する2...

CSSはリストのスタイルを設定し、ナビゲーションメニューの実装コードを作成します。

1. リストシンボルを設定するlist-style-type: attribute; //リストの...

Javascript 仮想 DOM の詳細な説明

目次仮想DOMとは何ですか?なぜ仮想DOMが必要なのでしょうか?仮想 DOM はどのようにして実際の...

Linux で大きなファイルの指定された内容を見つける方法

大きなことも小さなことも考えて、方向転換しましょう。 Linux では非常に大きなファイルに遭遇する...

HTML の META タグの使用に関するヒントの例

HTML メタタグHTML メタタグは、Web ページのコンテンツに関する情報をブラウザや検索エンジ...

MySQLのユーザーアカウント管理と権限管理の詳細な説明

序文MySQL の権限テーブルは、データベースの起動時にメモリにロードされます。ユーザーが ID 認...

読み取り専用と無効の微妙な違いの詳細な説明

「読み取り専用」と「無効」はどちらも、ユーザーがフォーム フィールドの内容を変更できないようにします...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

MySQLリモート接続権限の詳細な説明

1. MySQLデータベースにログインするmysql -u ルート -pユーザーテーブルを表示する ...

Vue のループフォーム項目例の詳細な説明

場合によっては、ユーザーがボタンをクリックして同様のフォームを追加し、クリックごとに 1 回追加でき...

webpack -v エラー解決

背景webpackのバージョンを確認したいのですが、webpack -vを実行するとエラーが報告され...

シンプルなビデオ連射機能を実装する JavaScript CSS3

この記事では、最も単純なビデオ連射機能をシミュレートするデモを作成します。アイデア:再生する動画と同...

Nginx で何ができるかの包括的な分析

序文この記事は、サードパーティのモジュールをロードせずにNginxで処理できることのみに焦点を当てて...

チェックボックスとラジオボタンの配置を実装する方法

ブラウザによって動作が異なるだけでなく、フォントやテキスト サイズによっても動作が異なります。フォー...