


Satu artikel untuk memahami tiga jenis unjuran kandungan dalam Sudut (slot tunggal, berbilang slot, bersyarat)
Artikel ini akan membawa anda melalui unjuran kandungan dalam sudut, dan memperkenalkan unjuran kandungan slot tunggal, unjuran kandungan berbilang slot dan unjuran kandungan bersyarat. Saya harap ia akan membantu semua orang.
[Cadangan tutorial berkaitan: "tutorial sudut"]
Unjuran kandungan slot tunggal
Unjuran kandungan slot tunggal bermaksud mencipta komponen di mana anda boleh menayangkan komponen.
zippy-basic.component.ts
import { Component } from '@angular/core'; @Component({ selector: 'app-zippy-basic', template: ` <h2 id="单插槽内容投影">单插槽内容投影</h2> <ng-content></ng-content> ` }) export class ZippyBasicComponent {}
Dengan elemen ng-content
, pengguna komponen ini kini boleh menayangkan mesej mereka sendiri ke dalam komponen. Contohnya:
app.component.html
<!-- 将 app-zippy-basic 元素包裹的全部内容投影到 zippy-basic 组件中去 --> <app-zippy-basic> <p>单插槽内容投影:投影数据</p> </app-zippy-basic>
Kesannya adalah seperti berikut:
elemen ng-kandungan ialah pemegang tempat, Ia tidak mencipta elemen DOM sebenar. Atribut tersuai
ng-content
tersebut akan diabaikan.
Unjuran kandungan berbilang slot
- templat komponen mengandungi berbilang teg
ng-content
.- Untuk membezakan kandungan yang diunjurkan yang boleh ditayangkan kepada teg
ng-content
yang sepadan, atributng-content
pada tegselect
perlu digunakan sebagai pengenalan.select
Atribut menyokong sebarang gabungan nama teg, atribut, kelas CSS dan :bukan kelas pseudo.- Teg
select
tanpa menambah atributng-content
akan digunakan sebagai slot lalai. Semua kandungan unjuran yang sepadan akan ditayangkan pada kedudukan kandungan-ng.
zippy-multislot.component.ts
import { Component } from '@angular/core'; @Component({ selector: 'app-zippy-multislot', template: ` <h2 id="多插槽内容投影">多插槽内容投影</h2> <ng-content></ng-content> <ng-content select="[question]"></ng-content> ` }) export class ZippyMultislotComponent {}
app.component.html
<!-- 使用 question 属性的内容将投影到带有 `select=[question]` 属性的 ng-content 元素。 --> <app-zippy-multislot> <p question style="color: hotpink;"> 带question属性的p元素 </p> <p style="color: lightgreen">不带question属性的p元素-->匹配到不带select属性的ng-content</p> <p>不带question属性的p元素-->匹配到不带select属性的ng-content</p> </app-zippy-multislot>
Kesannya adalah seperti berikut:
Dalam contoh sebelumnya, hanya elemen ng-kandungan kedua yang mempunyai atribut pilih yang ditentukan. Akibatnya, elemen pertama akan menerima sebarang kandungan lain yang ditayangkan ke dalam komponen tersebut.
Unjuran kandungan bersyarat
Adalah disyorkan untuk menggunakan tag
ng-container
kerana ia tidak memerlukan pemaparan elemen DOM sebenar .
<ng-container *ngTemplateOutlet="templateRefExp; context: contextExp"></ng-container> <!-- 等同 --> <ng-container [ngTemplateOutlet]="templateRefExp" [ngTemplateOutletContext]="contextExp"></ng-container>
参数 | 类型 | 说明 |
---|---|---|
templateRefExp | TemplateRef | null | 一个字符串,用于定义模板引用以及模板的上下文对象 |
contextExp | Object | null | 是一个对象,该对象的键名将可以在局部模板中使用 let 声明中进行绑定。在上下文对象中使用 $implicit 为键名时,将把它作为默认值。 |
ng-template
teg #ID
akan sepadan dengan templateRefExp
, membenamkan kandungan teg ng-template
ke dalam ngTemplateOutlet
yang ditentukan.
Contoh 1:
<header>头部</header> <main> <h3 id="内容">内容:</h3> <ng-container [ngTemplateOutlet]="greet"></ng-container> </main> <footer>底部</footer> <ng-template #greet> <div> <h4 id="hi">hi!</h4> <h4 id="hello-nbsp-my-nbsp-dear-nbsp-friend">hello my dear friend!</h4> </div> </ng-template>
Kesan:
ViewChild dan ContentChild
ContentChild
: berkaitan dengan subnod kandungan, mengendalikan kandungan yang diunjurkan ;ViewChild
: berkaitan dengan subnod paparan, mengendalikan kandungannya sendiri lihat kandungan;
ContentChild
Dalam bahagian sebelumnya, kami menggunakan unjuran kandungan untuk membolehkan teg komponen tersuai membenamkan teg html atau teg komponen tersuai , Jadi bagaimana ia beroperasi pada kandungan yang diunjurkan
Mula-mula buat dua komponen
/**** part-b.component.ts ****/ import { Component, OnInit,Output} from '@angular/core'; @Component({ selector: 'app-content-part-b', templateUrl: './part-b.component.html', styleUrls: ['./part-b.component.scss'] }) export class PartBComponent implements OnInit { constructor() { } ngOnInit() { } public func():void{ console.log("PartB"); } }
/**** part-a.component.ts ****/ import { Component, OnInit, ContentChild } from '@angular/core'; // 1、引入 part-b 组件 import { PartBComponent } from '../part-b/part-b.component'; @Component({ selector: 'app-content-part-a', templateUrl: './part-a.component.html', styleUrls: ['./part-a.component.scss'] }) export class PartAComponent implements OnInit { // 2、获取投影 @ContentChild(PartBComponent) PartB:PartBComponent constructor() { } ngOnInit() {} ngAfterContentInit(): void { // 3、调用 part-b 组件的 func() 方法 this.PartB.func(); } public func() { console.log('PartA') } }
unjurkan kandungan komponen part-b
ke dalam komponen part-a
<!-- content.component.html --> <div> <div>Content</div> <div> <app-content-part-a> <!-- 投影在part-a组件中的内容 --> <h1 id="PartA-start">PartA--start</h1> <app-content-part-b></app-content-part-b> <span>PartA--end</span> </app-content-part-a> </div> </div>
Dalam kitaran hayat komponen, terdapat cangkuk
ngAfterContentInit()
yang berkaitan dengan pemulaan kandungan yang diunjurkan, jadi operasi kandungan kami yang berkaitan dengan unjuran harus dilakukan selepas permulaannya selesai
ViewChild
Bahagian sebelumnya ContentChild
beroperasi pada kandungan yang diunjurkan, manakala ViewChild
beroperasi pada kandungan paparannya sendiri
untuk yang sebelumnya bahagian content.component.html
Ubah suai seperti berikut:
<!-- content.component.html --> <div> <div>Content</div> <div> <!-- 在此处引用模板变量 #partA --> <app-content-part-a #partA> <h1 id="PartA-start">PartA--start</h1> <app-content-part-b></app-content-part-b> <span>PartA--end</span> </app-content-part-a> </div> </div>
/**** content.component.ts ****/ import { Component, OnInit, ViewChild } from '@angular/core'; @Component({ selector: 'app-content', templateUrl: './content.component.html', styleUrls: ['./content.component.scss'] }) export class ContentComponent implements OnInit { // 2、获取视图 partA @ViewChild('partA') partA: any; constructor() { } ngOnInit() {} ngAfterViewInit(): void { // 3、调用 part-a 组件的 func() 方法 this.partA.func(); } }
ngAfterContentInit()
sepadan denganngAfterViewInit()
(permulaan nod paparan adalah selepas kandungan yang diunjurkan dimulakan)
ContentChild
dan ViewChild
juga wujud dalam bentuk jamak, iaitu ContentChildren
dan ViewChildren
Mereka memperoleh satu set nod, dan tiada perbezaan antara yang lain
ditulis seperti berikut :
import { Component, OnInit, ContentChild,ContentChildren ,QueryList } from '@angular/core'; import { PartBComponent } from '../part-b/part-b.component'; @Component({ selector: 'app-content-part-a', templateUrl: './part-a.component.html', styleUrls: ['./part-a.component.scss'] }) export class PartAComponent implements OnInit { @ContentChildren(PartBComponent) PartBs: QueryList<PartBComponent>; constructor() { } ngOnInit() {} }
Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Pengenalan kepada Pengaturcaraan! !
Atas ialah kandungan terperinci Satu artikel untuk memahami tiga jenis unjuran kandungan dalam Sudut (slot tunggal, berbilang slot, bersyarat). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Artikel ini meneruskan pembelajaran Angular, membawa anda memahami metadata dan penghias dalam Angular, dan memahami secara ringkas penggunaannya, saya harap ia akan membantu semua orang.

Angular.js ialah platform JavaScript yang boleh diakses secara bebas untuk mencipta aplikasi dinamik. Ia membolehkan anda menyatakan pelbagai aspek aplikasi anda dengan cepat dan jelas dengan memanjangkan sintaks HTML sebagai bahasa templat. Angular.js menyediakan pelbagai alatan untuk membantu anda menulis, mengemas kini dan menguji kod anda. Selain itu, ia menyediakan banyak ciri seperti penghalaan dan pengurusan borang. Panduan ini akan membincangkan cara memasang Angular pada Ubuntu24. Mula-mula, anda perlu memasang Node.js. Node.js ialah persekitaran berjalan JavaScript berdasarkan enjin ChromeV8 yang membolehkan anda menjalankan kod JavaScript pada bahagian pelayan. Untuk berada di Ub

Artikel ini akan memberi anda pemahaman yang mendalam tentang pengurus negeri Angular NgRx dan memperkenalkan cara menggunakan NgRx saya harap ia akan membantu anda!

Adakah anda tahu Angular Universal? Ia boleh membantu tapak web menyediakan sokongan SEO yang lebih baik!

Bagaimana untuk menggunakan monaco-editor dalam sudut? Artikel berikut merekodkan penggunaan monaco-editor dalam sudut yang digunakan dalam perniagaan baru-baru ini. Saya harap ia akan membantu semua orang!

Artikel ini akan berkongsi dengan anda pengalaman praktikal Angular dan mempelajari cara membangunkan sistem bahagian belakang dengan cepat menggunakan angualr digabungkan dengan ng-zorro. Saya harap ia akan membantu semua orang.

Dengan perkembangan pesat Internet, teknologi pembangunan bahagian hadapan juga sentiasa bertambah baik dan berulang. PHP dan Angular ialah dua teknologi yang digunakan secara meluas dalam pembangunan bahagian hadapan. PHP ialah bahasa skrip sebelah pelayan yang boleh mengendalikan tugas seperti memproses borang, menjana halaman dinamik dan mengurus kebenaran akses. Angular ialah rangka kerja JavaScript yang boleh digunakan untuk membangunkan aplikasi satu halaman dan membina aplikasi web berkomponen. Artikel ini akan memperkenalkan cara menggunakan PHP dan Angular untuk pembangunan bahagian hadapan, dan cara menggabungkannya

Artikel ini akan membawa anda melalui komponen bebas dalam Angular, cara mencipta komponen bebas dalam Angular, dan cara mengimport modul sedia ada ke dalam komponen bebas saya harap ia akan membantu anda!
