Detaillierte Erklärung der Angular-Komponentenprojektion

Detaillierte Erklärung der Angular-Komponentenprojektion

Überblick

Ändern Sie den Inhalt von Komponentenvorlagen dynamisch zur Laufzeit. Es ist nicht so kompliziert wie Routing, es ist nur ein Stück HTML ohne Geschäftslogik.

Die ngContent-Direktive projiziert ein beliebiges Fragment der Vorlage der übergeordneten Komponente auf eine untergeordnete Komponente.

1. Einfaches Beispiel

1. Verwenden Sie die Direktive <ng-content> in der Unterkomponente, um den Projektionspunkt zu markieren

<div Klasse="Wrapper">
  <h2>Ich bin eine untergeordnete Komponente</h2>
  <div>Dieses Div ist in der untergeordneten Komponente definiert</div>
  <ng-Inhalt></ng-Inhalt> 
</div>

2. Schreiben Sie in der übergeordneten Komponente das HTML-Fragment des Projektionspunkts, der auf die untergeordnete Komponente projiziert werden soll, in das Tag der untergeordneten Komponente

<div Klasse="Wrapper">
  <h2>Ich bin die übergeordnete Komponente</h2>
  <div>Dieses Div ist in der übergeordneten Komponente definiert</div>
  <app-child2>
    <div>Dieses Div ist die übergeordnete Komponente, die in die untergeordnete Komponente projiziert wird</div>
  </app-child2>
</div>

Wirkung:

Unterkomponenten und Stile:

.Verpackung{
    Hintergrund: hellgrün;
}

Übergeordnete Komponente plus Stil:

.Verpackung{
    Hintergrund: Cyan;
} 

2. Mehrere <ng-content>-Projektionspunkte

Unterkomponenten:

<div Klasse="Wrapper">
  <h2>Ich bin eine untergeordnete Komponente</h2>
  <ng-content selector=".header"></ng-content>
  <div>Dieses Div ist in der untergeordneten Komponente definiert</div>
  <ng-content selector=".footer"></ng-content> 
</div>

Übergeordnete Komponente:

<div Klasse="Wrapper">
  <h2>Ich bin die übergeordnete Komponente</h2>
  <div>Dieses Div ist in der übergeordneten Komponente definiert</div>
  <app-child2>
    <div class="header">Dies ist der Seitenkopf. Dieses Div ist die übergeordnete Komponente, die in die untergeordnete Komponente projiziert wird. Der Titel lautet {{title}}</div>
    <div class="footer">Dies ist die Fußzeile. Dieses Div ist die übergeordnete Komponente, die in die untergeordnete Komponente projiziert wird</div>
  </app-child2>
</div> 

Kopf- und Fußzeile werden in die untergeordnete Komponente projiziert, und der Titel wird ebenfalls projiziert.

Interpolationsausdrücke in projiziertem Inhalt in der Vorlage der übergeordneten Komponente können nur Eigenschaften in der übergeordneten Komponente binden, obwohl der Inhalt in die untergeordnete Komponente projiziert wird.

3. HTML durch Angular-Attributbindung einfügen

Fügen Sie der Vorlage der übergeordneten Komponente eine Zeile hinzu:

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

Fügen Sie der übergeordneten Komponente ein divContent-Attribut hinzu, und der Inhalt ist ein HTML-Fragment.

divContent="<div>Eigenschaftsbindung innerHTML</div>";

Wirkung

4. Vergleich der ngContent-Direktive und der Attributbindung innerHTML

[innerHTML] ist eine browserspezifische API.

Die ngContent-Direktive ist plattformunabhängig. Es können mehrere Projektionspunkte gebunden werden.

Geben Sie ngContent-Direktiven Priorität

Oben finden Sie eine ausführliche Erläuterung der Projektion von Angular-Komponenten. Weitere Informationen zur Projektion von Angular-Komponenten finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Eine kurze Diskussion über versteckte Inhalte in Angular4 ng-content
  • Eine kurze Diskussion über die Angular2 ng-content-Direktive zum Einbetten von Inhalten in Komponenten
  • So erstellen Sie Ihre eigene Angular-Komponentenbibliothek mit DevUI
  • Detaillierte Erläuterung der Angular-Datenbindung und ihrer Implementierung
  • Detaillierte Erklärung der drei wichtigsten Frontend-Technologien React, Angular und Vue
  • Angular-Leistungsoptimierung: Komponenten von Drittanbietern und Lazy-Loading-Technologie
  • Detaillierte Erklärung der Ansichtszusammenfassungsdefinition im Angular-Framework
  • Detaillierte Erklärung der Rolle von Klammern in AngularJS

<<:  PHP geplante Backup MySQL und mysqldump Syntax-Parameter detailliert

>>:  Die Vollversion des gängigen Linux-Tools vi/vim

Artikel empfehlen

Docker-Bindung mit fester IP/Hostübergreifender Container-Gegenzugriffsvorgang

Vorwort Bisher waren statische IPs, die über Pipe...

Beispielanalyse zum Beheben von Problemen in historischen Linux-Images

Fix für Probleme mit historischen Linux-Images De...

Schritte zum Exportieren der Felder und zugehörigen Attribute von MySQL-Tabellen

Müssen die Felder und Eigenschaften der Tabelle i...

11 Möglichkeiten, Duplikate aus JS-Arrays zu entfernen

Bei der tatsächlichen Arbeit oder bei Interviews ...

Tutorial zur Installation und Konfiguration der Linux CentOS MySQL-Datenbank

Hinweise zur Installation der MySQL-Datenbank, mi...

Tipps zur Optimierung von CSS-Schattenanimationen

Diese Technik stammt aus diesem Artikel - So anim...

Wie CSS die Zeit des weißen Bildschirms während des ersten Ladens beeinflusst

Rendering-Pipeline mit externen CSS-Dateien In de...

Tiefgreifendes Verständnis der sieben Kommunikationsmethoden von Vue-Komponenten

Inhaltsverzeichnis 1. Requisiten/$emit Einführung...

So verwenden Sie vs2019 für die Linux-Remote-Entwicklung

Normalerweise gibt es bei der Entwicklung von Lin...

Teilen Sie 12 häufig verwendete Loader in Webpack (Zusammenfassung)

Inhaltsverzeichnis Vorwort Stillader CSS-Lader Sa...

Detaillierte Schritte zum Herunterladen und Installieren von Tomcat unter Linux

Wenn Sie gerade erst mit Linux in Berührung gekom...

So verwenden Sie Bind zum Einrichten eines DNS-Servers

DNS (Domain Name Server) ist ein Server, der Domä...