目次
" >##1. コンテンツの一部を投影する
" > #コンテナコンポーネントは次のように記述します
使用标签锁定投影位置
コンテナ コンポーネントは次のように記述されます" > を使用して子要素をラップし、不要な dom レイヤーを削減しますコンテナ コンポーネントは次のように記述されます
条件付き_render content またはコンテンツを複数回レンダリングする場合は、条件付きでレンダリングされるコンテンツを含む ng-template 要素を受け入れるようにコンポーネントを構成する必要があります。 " >コンポーネントが必要な場合__条件付き_render content またはコンテンツを複数回レンダリングする場合は、条件付きでレンダリングされるコンテンツを含む ng-template 要素を受け入れるようにコンポーネントを構成する必要があります。
ホームページ ウェブフロントエンド jsチュートリアル Angular コンポーネント学習におけるコンテンツ投影の簡単な分析

Angular コンポーネント学習におけるコンテンツ投影の簡単な分析

Aug 09, 2021 am 10:24 AM
angular コンポーネント

この記事では、Angular コンポーネントでのコンテンツ プロジェクションについて説明します。コンテンツ プロジェクションは、Vue のスロットに非常に似ています。コンポーネントをカプセル化するときに非常に便利です。一緒に体験しましょう

Angular コンポーネント学習におけるコンテンツ投影の簡単な分析

[関連チュートリアルの推奨事項: "angular チュートリアル 》]

##1. コンテンツの一部を投影する

##コンテナ コンポーネントは次のように記述されます

#

<div>
  编号1
  <ng-content></ng-content>
</div>
ログイン後にコピー
ビジネス コンポーネントは次のように使用されます

#
<app-page-container>
	未指定投影位置的内容会被投影到无select属性的区域
</app-page-container>
ログイン後にコピー

#2. 複数のコンテンツ/コンポーネントをプロジェクトします

#コンテナコンポーネントは次のように記述します

タグを使用して投影位置をロックします

    クラスを使用して投影位置をロックします投影位置
  • # カスタム コンポーネント名で投影位置をロック
  • #カスタム属性で投影位置をロック
  • #
    <div>
      编号2
      <ng-content select="h3"></ng-content>
      <ng-content select=".my-class"></ng-content>
      <ng-content select="app-my-hello"></ng-content>
      <ng-content select="[content]"></ng-content>
    </div>
    ログイン後にコピー

    ビジネス コンポーネントは次のように使用されます
  • <app-page-container>
      <h3 id="使用标签锁定投影位置">使用标签锁定投影位置</h3>
      <div class="my-class">使用class锁定投影位置</div>
      <app-my-hello>使用自定义组件名称锁定投影位置</app-my-hello>
      <div content>使用自定义属性锁定投影位置</div>
    </app-page-container>
    ログイン後にコピー

    デモ

##3. 子要素の投影

Angular コンポーネント学習におけるコンテンツ投影の簡単な分析vue のテンプレートと同様に、

ng-container

を使用して子要素をラップし、不要な dom レイヤーを削減しますコンテナ コンポーネントは次のように記述されます

<div>
  编号4
  <ng-content select="question"></ng-content>
</div>
ログイン後にコピー

ビジネス コンポーネントは次のように記述されます#

<app-page-container>
  <ng-container ngProjectAs="question">
    <p>内容投影酷吗?</p>
    <p>内容投影酷吗?</p>
    <p>内容投影酷吗?</p>
    <p>内容投影酷吗?</p>
  </ng-container>
</app-page-container>
ログイン後にコピー

4. 条件付きコンテンツの投影

中国語 Web サイトの説明:

コンポーネントが必要な場合__条件付き_render content またはコンテンツを複数回レンダリングする場合は、条件付きでレンダリングされるコンテンツを含む ng-template 要素を受け入れるようにコンポーネントを構成する必要があります。

この場合、コンポーネントが ng-content を定義していなくても、コンポーネントのユーザーがコンテンツを提供する限り、ng-content 要素を使用することはお勧めできません。要素または ng - content 要素は

ngIf
    ステートメント内にあり、コンテンツは常に初期化されます。
  • ng-template 要素を使用すると、必要な条件に基づいてコンポーネントに明示的にコンテンツをレンダリングさせ、複数回レンダリングすることができます。 Angular は、要素が明示的にレンダリングされるまで、ng-template 要素のコンテンツを初期化しません。

  • ng-container を使用します
  • 投影ブロックを定義します
## を使用します
ng-template

要素をレンダリングするための #ngTemplateOutlet ディレクティブ。

組み込みの動的ディレクティブ
    *ngIf
  • を使用して、投影をレンダリングするかどうかを制御します。

    <div>
      编号3
      <ng-content select="[button]"></ng-content>
      <p *ngIf="expanded">
        <ng-container [ngTemplateOutlet]="content.templateRef"> </ng-container>
      </p>
    </div>
    ログイン後にコピー
    ビジネス コンポーネントでは、

    ng-template
  • を使用して実際の要素をラップします。
  • my-hello コンポーネントは、印刷状況を観察するために ngOnInit() でログ出力を行うだけです。

  • <app-page-container>
      <div button>
        <button appToggle>切换</button>
      </div>
      <ng-template appContent>
        <app-my-hello>有条件的内容投影~</app-my-hello>
      </ng-template>
    </app-page-container>
    ログイン後にコピー

ロジックがまだ共謀していないため、ページが以前ほどスムーズにレンダリングされないことがわかります。続けましょう。コマンドを作成し、NgModule に登録します。使用する前に登録する必要があります~コマンドは登録する必要があります~

import { Directive, TemplateRef } from &#39;@angular/core&#39;;

@Directive({
  selector: &#39;[appContent]&#39;,
})
export class ContentDirective {
  constructor(public templateRef: TemplateRef<unknown>) {}
}
ログイン後にコピー

再度定義していきます コンポーネント内のロゴの表示/非表示を制御するコマンド

##コマンドの登録が必要です~

@Directive({
  selector: &#39;[appToggle]&#39;,
})
export class ToggleDirective {
  @HostListener(&#39;click&#39;) toggle() {
    this.app.expanded = !this.app.expanded;
  }
  constructor(public app: PageContainerComponent) {}
}
ログイン後にコピー

コンテナ コンポーネントのコンテンツの指示に今定義を記述します。ページは現在エラーを報告していません~

export class PageContainerComponent implements OnInit {

  expanded: boolean = false;

  @ContentChild(ContentDirective)
  content!: ContentDirective;

}
ログイン後にコピー

ログから、expanded を切り替えると次のことがわかります。

コンテナ コンポーネントのロゴ。開いた状態のみです。
my-hello

コンポーネントは初期化されます。次の

ngIf
ではページ上にレンダリングされたコンテンツが表示されませんが、コンポーネントは実際に初期化されています。

<div *ngIf="false">
  <ng-content *ngIf="false" select="app-my-hello"></ng-content>
</div>
ログイン後にコピー

5. @ContentChild および @ContentChildrenこれら 2 つのデコレータを使用してコンポーネントを投影します 操作を実行します

アノテーションを使用して、ビジネス コンポーネントで投影されたコンポーネントを定義します。

@ContentChild(HelloWorldComp)
helloComp: HelloWorldComp;

@ContentChildren(HelloWorldComp)
helloComps: QueryList<HelloWorldComp>;
ログイン後にコピー
ngAfterContentInit()

フックで実行して、操作します。投影されたコンポーネント

#6. @ViewChild と @ViewChildren

#これら 2 つのデコレータを使用して、フィンガージョインされたサブオブジェクトを操作します。コンポーネント

アノテーションを使用してビジネス コンポーネントのサブコンポーネントを定義します

@ViewChild(HelloWorldComp)
helloComp: HelloWorldComp;
  
@ViewChildren(HelloWorldComp)
helloComps QueryList<HelloWorldComp>;
ログイン後にコピー
InngAfterViewInit()フックが終了した後実行して、直接のサブコンポーネントを操作します

#結論

コンポーネントの使用法についてここで書きました。私たちの文章スキルには限界があるので、さあ、 .~ を取得しました

プログラミング関連の知識について詳しくは、プログラミング入門をご覧ください。 !

以上がAngular コンポーネント学習におけるコンテンツ投影の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Windows 10 旧バージョンコンポーネント DirectPlay のインストール方法 Windows 10 旧バージョンコンポーネント DirectPlay のインストール方法 Dec 28, 2023 pm 03:43 PM

win10で一部のゲームをプレイすると、画面がフリーズしたり画面がぼやけるなどの不具合が多くのユーザーに発生しますが、現時点ではダイレクトプレイ機能をオンにすることで問題を解決でき、機能の操作方法も非常に簡単です。 win10 の古いコンポーネントである Directplay をインストールする方法 1. 検索ボックスに「コントロール パネル」と入力して開きます 2. 表示方法として大きなアイコンを選択します 3. 「プログラムと機能」を見つけます 4. 左側をクリックして有効にするか、 Win 機能をオフにする 5. ここで古いバージョンを選択します チェックボックスをオンにするだけです

Ubuntu 24.04 に Angular をインストールする方法 Ubuntu 24.04 に Angular をインストールする方法 Mar 23, 2024 pm 12:20 PM

Angular.js は、動的アプリケーションを作成するための無料でアクセスできる JavaScript プラットフォームです。 HTML の構文をテンプレート言語として拡張することで、アプリケーションのさまざまな側面を迅速かつ明確に表現できます。 Angular.js は、コードの作成、更新、テストに役立つさまざまなツールを提供します。さらに、ルーティングやフォーム管理などの多くの機能も提供します。このガイドでは、Ubuntu24 に Angular をインストールする方法について説明します。まず、Node.js をインストールする必要があります。 Node.js は、ChromeV8 エンジンに基づく JavaScript 実行環境で、サーバー側で JavaScript コードを実行できます。ウブにいるために

Angular のサーバーサイド レンダリング (SSR) について説明する記事 Angular のサーバーサイド レンダリング (SSR) について説明する記事 Dec 27, 2022 pm 07:24 PM

Angular Universal をご存知ですか?これは、Web サイトがより優れた SEO サポートを提供するのに役立ちます。

フロントエンド開発に PHP と Angular を使用する方法 フロントエンド開発に PHP と Angular を使用する方法 May 11, 2023 pm 04:04 PM

インターネットの急速な発展に伴い、フロントエンド開発テクノロジーも常に改善され、反復されています。 PHP と Angular は、フロントエンド開発で広く使用されている 2 つのテクノロジーです。 PHP は、フォームの処理、動的ページの生成、アクセス許可の管理などのタスクを処理できるサーバー側スクリプト言語です。 Angular は、単一ページ アプリケーションの開発やコンポーネント化された Web アプリケーションの構築に使用できる JavaScript フレームワークです。この記事では、PHPとAngularをフロントエンド開発に使用する方法と、それらを組み合わせる方法を紹介します。

Vueを使用してカレンダーコンポーネントを実装するにはどうすればよいですか? Vueを使用してカレンダーコンポーネントを実装するにはどうすればよいですか? Jun 25, 2023 pm 01:28 PM

Vue は非常に人気のあるフロントエンド フレームワークであり、コンポーネント化、データ バインディング、イベント処理など、開発者が効率的で柔軟で保守が容易な Web アプリケーションを構築するのに役立つ多くのツールと機能を提供します。この記事では、Vueを使ってカレンダーコンポーネントを実装する方法を紹介します。 1. 要件の分析 まず、このカレンダー コンポーネントの要件を分析する必要があります。基本的なカレンダーには次の機能が必要です: 当月のカレンダー ページの表示、前月または翌月への切り替えのサポート、特定の日のクリックのサポート、

VUE3 開発の基本: extend を使用してコンポーネントを継承する VUE3 開発の基本: extend を使用してコンポーネントを継承する Jun 16, 2023 am 08:58 AM

Vue は現在最も人気のあるフロントエンド フレームワークの 1 つであり、VUE3 は Vue フレームワークの最新バージョンであり、VUE2 と比較してパフォーマンスが高く、開発エクスペリエンスが優れているため、多くの開発者の最初の選択肢となっています。 VUE3 では extends を使ってコンポーネントを継承することが非常に実用的な開発手法となっておりますので、この記事では extends を使ってコンポーネントを継承する方法を紹介します。エクステンドとは何ですか? Vue では、extends は非常に実用的な属性であり、子コンポーネントが親から継承するために使用できます。

Angular コンポーネントとその表示プロパティ: 非ブロックのデフォルト値について Angular コンポーネントとその表示プロパティ: 非ブロックのデフォルト値について Mar 15, 2024 pm 04:51 PM

Angular フレームワークのコンポーネントのデフォルトの表示動作は、ブロックレベルの要素ではありません。この設計の選択により、コンポーネント スタイルのカプセル化が促進され、開発者が各コンポーネントの表示方法を意識的に定義することが促進されます。 CSS プロパティの表示を明示的に設定することで、Angular コンポーネントの表示を完全に制御して、目的のレイアウトと応答性を実現できます。

古いバージョンのwin10コンポーネントの設定を開く方法 古いバージョンのwin10コンポーネントの設定を開く方法 Dec 22, 2023 am 08:45 AM

Win10 の古いバージョンのコンポーネントは、デフォルトで閉じられていることが多いため、ユーザー自身が設定で有効にする必要があります。まず、設定を入力する必要があります。操作は非常に簡単です。以下の手順に従ってください。Win10 の古いバージョンはどこにありますか?バージョン コンポーネント? 開く 1. [スタート] をクリックし、[Win システム] をクリックします 2. クリックしてコントロール パネルに入ります 3. 次に、下のプログラムをクリックします 4. [Win 機能を有効または無効にする] をクリックします 5. ここで必要なものを選択できます開く

See all articles