Jadual Kandungan
1 ng-content Kandungan projek
二、 有条件的内容投影
Rumah hujung hadapan web tutorial js Mari kita bincangkan tentang kaedah unjuran kandungan dalam sudut

Mari kita bincangkan tentang kaedah unjuran kandungan dalam sudut

May 12, 2022 am 10:41 AM
angular angular.js

Artikel ini akan membincangkan tentang unjuran kandungan dalam sudut, memperkenalkan kaedah penggunaan ng-kandungan untuk unjuran kandungan, dan memahami kaedah pelaksanaan unjuran kandungan bersyarat. Saya harap ia akan membantu semua orang. !

Mari kita bincangkan tentang kaedah unjuran kandungan dalam sudut

1 ng-content Kandungan projek

1.1 ng-content<span style="font-size: 16px;">ng-content</span>

ng-content elemen ialah 占位符 yang digunakan untuk memasukkan kandungan luaran atau dinamik. Komponen induk menghantar 外部内容 kepada komponen anak, dan apabila Angular menghuraikan templat, kandungan luaran dimasukkan ke dalam templat komponen anak di mana ng-content muncul. [Tutorial berkaitan yang disyorkan: "tutorial sudut"]

Kami boleh menggunakan unjuran kandungan untuk mencipta komponen boleh guna semula. Komponen ini mempunyai logik dan susun atur yang sama dan boleh digunakan di banyak tempat. Umumnya kami sering menggunakannya apabila 封装 beberapa komponen awam.

1.2 Mengapa menggunakan unjuran kandungan

Tentukan komponen butang:

button-component.ts

@Component({
    selector: &#39;[appButton]&#39;,
    template: `
    <span class="icon-search"></span>
`
})
export class AppButtonComponent {}
Salin selepas log masuk

Tujuan komponen butang ini adalah untuk menambah ikon carian di dalam butang Kami sebenarnya menggunakannya seperti berikut:

<button appButton>click</button>
Salin selepas log masuk
Salin selepas log masuk

Kami mendapati bahawa komponen hanya akan memaparkan ikon carian, tetapi teks daripada. butang tidak akan dipaparkan. Bolehkah anda Penghias @Input yang paling biasa digunakan terlintas di fikiran, tetapi bagaimana jika kita bukan hanya mahu menyampaikan dalam teks, tetapi satu perenggan html? Di sinilah ng-content akan digunakan.

1.3 Unjuran kandungan slot tunggal

Bentuk unjuran kandungan yang paling asas ialah 单插槽内容投影.

Unjuran kandungan slot tunggal bermaksud mencipta komponen di mana kita boleh menayangkan komponen.

Ambil komponen butang sebagai contoh untuk mencipta unjuran kandungan slot tunggal:

button-component.ts

@Component({
    selector: &#39;[appButton]&#39;,
    template: `
    <span class="icon-search"></span> <ng-content></ng-content>
`
})
export class AppButtonComponent {}
Salin selepas log masuk

Penggunaan sebenar adalah seperti berikut:

<button appButton>click</button>
Salin selepas log masuk
Salin selepas log masuk

Anda boleh mendapati bahawa kesan komponen butang ini adalah untuk memaparkan kedua-dua ikon carian dan teks butang (klik). Iaitu, kandungan di tengah <button appButton></button> 投影 dialihkan ke kedudukan <ng-content></ng-content> komponen. Elemen

ng-content ialah pemegang tempat, ia tidak mencipta elemen DOM sebenar. Sifat tersuai kandungan ng tersebut akan diabaikan.

1.4 Unjuran Kandungan Berbilang Slot

Sesuatu komponen boleh mempunyai 多个插槽 dan setiap slot boleh menentukan satu CSS 选择器, pemilih menentukan apa yang masuk ke dalam slot itu. Corak ini dipanggil 多插槽内容投影. Menggunakan mod ini kita mesti menentukan perkara yang ingin kita tayangkan 出现在的位置. Ini boleh dicapai dengan menggunakan atribut ng-content select.

  • templat komponen mengandungi tag 多个 ng-content.
  • Untuk membezakan kandungan yang diunjurkan yang boleh ditayangkan kepada ng-content 标签 yang sepadan, anda perlu menggunakan atribut ng-content pada teg select sebagai pengenalan. Atribut
  • select menyokong sebarang gabungan 标签名, 属性, CSS 类 dan :not 伪类.
  • Teg select tanpa menambah atribut ng-content akan bertindak sebagai 默认插槽. Semua kandungan unjuran yang tidak dapat dipadankan akan ditayangkan di lokasi ng-content ini.

Ambil komponen butang sebagai contoh untuk mencipta unjuran kandungan berbilang slot:

button-component.ts

@Component({
    selector: &#39;[appButton]&#39;,
    template: `
    <span class="icon-search"></span> <ng-content select="[shuxing]"></ng-content> <ng-content select="p"></ng-content> <ng-content select=".lei"></ng-content>
`
})
export class AppButtonComponent {}
Salin selepas log masuk

Penggunaan sebenar adalah seperti berikut:

<button appButton>
<p>click</p> <span shuxing>me</span> <span class="lei">here</span>
</button>
Salin selepas log masuk

1.5 <code><span style="font-size: 16px;">ngProjectAs</span>ngProjectAs

ng-containerDalam beberapa kes, kita perlu menggunakan ngIf untuk meletakkan beberapa Kandungan dibalut dan dihantar ke komponen. Selalunya ia adalah kerana kita perlu menggunakan arahan struktur seperti ngSwitch atau

dsb. .

headerDalam contoh di bawah, kami telah membalut ng-container dengan

.
@Component({
    selector: &#39;app-card&#39;,
    template: `
		<div class="card">
		  <div class="header">
		    <ng-content select="header"></ng-content>
		  </div>
		  <div class="content">
		    <ng-content select="content"></ng-content>
		  </div>
		  <div class="footer">
		    <ng-content select="footer"></ng-content>
		  </div>
		  <ng-content></ng-content>
		</div>
`
})
export class AppCardComponent {}
Salin selepas log masuk

Penggunaan:
<app-card>
  <ng-container>
    <header>
      <h1>Angular</h1>
    </header>
  </ng-container>
  <content>One framework. Mobile & desktop.</content>
  <footer><b>Super-powered by Google </b></footer>
</app-card>
Salin selepas log masuk

ng-containerDisebabkan kewujudan header, bahagian selector tidak diberikan ke dalam slot yang ingin kami render, tetapi dijadikan no Sediakan sebarang ng-content dalam
. ngProjectAs Dalam kes ini kita boleh menggunakan atribut
. ng-container Tambahkan atribut ini pada

di atas untuk menjadikannya seperti yang kami jangkakan. <🎜>
<app-card>
  <ng-container ngProjectAs=&#39;header&#39;>
    <header>
      <h1>Angular</h1>
    </header>
  </ng-container>
  <content>One framework. Mobile & desktop.</content>
  <footer><b>Super-powered by Google </b></footer>
</app-card>
Salin selepas log masuk

二、 有条件的内容投影

如果你的元件需要有条件地渲染内容或多次渲染内容,则应配置该元件以接受一个 ng-template 元素,其中包含要有条件渲染的内容。

在这种情况下,不建议使用 ng-content 元素,因为只要元件的使用者提供了内容,即使该元件从未定义 ng-content 元素或该 ng-content 元素位于 ngIf 语句的内部,该内容也总会被初始化。

使用 ng-template 元素,你可以让元件根据你想要的任何条件显式渲染内容,并可以进行多次渲染。在显式渲染 ng-template 元素之前,Angular 不会初始化该元素的内容。

2.1 <span style="font-size: 16px;">ng-container</span>

既不是一个组件,也不是一个指令,仅仅是一个特殊的tag而已。 使用 ng-container 渲染所包含的模板内容,不包含自身。

  • angular代码片段
<div>
  <ng-container>
    <p>My name is wyl.</p>
    <p>What is you name?</p>
  </ng-container>
</div>
Salin selepas log masuk
  • 浏览器调试窗口,可以发现 <ng-container> 标签消失了,并没有起任何作用
<div>
  <p>My name is wyl.</p>
  <p>What is you name?</p>
</div>
Salin selepas log masuk
  • 使用场景,如下,在我们需要遍历if 判断 时,它可以承担一个载体的作用
<ul>
  <ng-container *ngFor="let item of items">
    <li>{{ item .name}}</li>
    <li>{{ item .age}}</li>
    <li>{{ item .sex}}</li>
  </ng-container>
</ul>
Salin selepas log masuk

另外,ng 中常见错误之一的 forif 不能写在同一标签上(在一个宿主元素上只能应用一个结构型指令),利用 ng-container 标签可以在实现功能的基础上减少层级的嵌套。

2.2 <span style="font-size: 16px;">ng-template</span>

先来看下面一段代码

<ng-template>
    <p> In template, no attributes. </p>
</ng-template>

<ng-container>
    <p> In ng-container, no attributes. </p>
</ng-container>
Salin selepas log masuk

浏览器输出结果是:

In ng-container, no attributes.
Salin selepas log masuk

<ng-template> 中的内容不会显示。当在上面的模板中添加 ngIf 指令:

<ng-template [ngIf]="true">
   <p> ngIf with a ng-template.</p>
</ng-template>

<ng-container *ngIf="true">
   <p> ngIf with an ng-container.</p>
</ng-container>
Salin selepas log masuk

浏览器输出结果是:

ngIf with a ng-template.
ngIf with an ng-container.
Salin selepas log masuk

2.3 <span style="font-size: 16px;">ng-template</span><ng-container> 的配合使用

<ng-container *ngIf="showSearchBread; else tplSearchEmpty">
     暂时搜索不到您要的数据喔
</ng-container>
<ng-template #tplSearchEmpty>
     快快开始获取吧!
</ng-template>
Salin selepas log masuk

2.4 <span style="font-size: 16px;">ngTemplateOutlet</span>

插入 ng-template 创建的内嵌视图。 ngTemplateOutlet 是一个结构型指令,接收一个 TemplateRef 类型的值;

<div *ngTemplateOutlet="tpl1"></div>
<ng-template #tpl1>
  <span>I am span in template {{title}}</span>
</ng-template>
Salin selepas log masuk

*ngTemplateOutlet = "templateRefExp; content: contentExp "

  • templateRefExp: ng-template 元素的 #ID
  • contextExp:
    • 可空参数

    • content 是一个对象,这个对象可以包含一个 $implicitkey 作为默认值, 使用时在 模板 中用 let-key 语句进行绑定

    • content 的非默认字段需要使用 let-templateKey=contentKey 语句进行绑定

使用如下:

@Component({
  selector: &#39;ng-template-outlet-example&#39;,
  template: `
    <ng-container *ngTemplateOutlet="greet"></ng-container>
    <hr>
    <ng-container *ngTemplateOutlet="eng; context: myContext"></ng-container>
    <hr>
    <ng-container *ngTemplateOutlet="svk; context: myContext"></ng-container>
    <hr>
    <ng-template #greet><span>Hello</span></ng-template>
    <ng-template #eng let-name><span>Hello {{name}}!</span></ng-template>
    <ng-template #svk let-person="localSk"><span>Ahoj {{person}}!</span></ng-template>
`
})
class NgTemplateOutletExample {
  myContext = {$implicit: &#39;World&#39;, localSk: &#39;Svet&#39;};
}
Salin selepas log masuk

2.5 利用 <span style="font-size: 16px;">ngTemplateOutlet</span> 进行内容投影

@Component({
    selector: &#39;app-card&#39;,
    template: `
		<div class="card">
		  <div class="header">
		  	<ng-container *ngTemplateOutlet="headerTemplate; context: { $implicit: title, index: otherDate }"></ng-container>
		  </div>
		</div>
`
})
export class AppCardComponent {

	@ContentChild(&#39;header&#39;, { static: true }) headerTemplate: TemplateRef<any>;

	public title = &#39;Test&#39;;
	public otherDate = {
	 	auth: &#39;me&#39;,
	 	name: &#39;appCard&#39;
	};
}
Salin selepas log masuk

使用

<app-card>
  <ng-template #header let-label let-item="otherDate">
    <h1>Angular</h1> {{label}} (Test) and  {{otherDate | json}} ({auth: &#39;me&#39;, name: &#39;appCard&#39;})
  </ng-template>
</app-card>
Salin selepas log masuk

更多编程相关知识,请访问:编程教学!!

Atas ialah kandungan terperinci Mari kita bincangkan tentang kaedah unjuran kandungan dalam sudut. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pembelajaran sudut bercakap tentang komponen kendiri (Komponen Kendiri) Pembelajaran sudut bercakap tentang komponen kendiri (Komponen Kendiri) Dec 19, 2022 pm 07:24 PM

Artikel ini akan membawa anda untuk terus belajar sudut dan memahami secara ringkas komponen kendiri (Komponen Kendiri) dalam Angular Saya harap ia akan membantu anda!

Bagaimana untuk memasang Angular pada Ubuntu 24.04 Bagaimana untuk memasang Angular pada Ubuntu 24.04 Mar 23, 2024 pm 12:20 PM

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

Penjelasan terperinci tentang pengurus keadaan pembelajaran sudut NgRx Penjelasan terperinci tentang pengurus keadaan pembelajaran sudut NgRx May 25, 2022 am 11:01 AM

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

Artikel yang meneroka pemaparan sisi pelayan (SSR) dalam Angular Artikel yang meneroka pemaparan sisi pelayan (SSR) dalam Angular Dec 27, 2022 pm 07:24 PM

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

Analisis ringkas tentang cara menggunakan editor monaco dalam sudut Analisis ringkas tentang cara menggunakan editor monaco dalam sudut Oct 17, 2022 pm 08:04 PM

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!

Angular NG-ZORRO dengan cepat membangunkan sistem bahagian belakang Angular NG-ZORRO dengan cepat membangunkan sistem bahagian belakang Apr 21, 2022 am 10:45 AM

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.

Cara menggunakan PHP dan Angular untuk pembangunan bahagian hadapan Cara menggunakan PHP dan Angular untuk pembangunan bahagian hadapan May 11, 2023 pm 04:04 PM

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

Analisis ringkas komponen bebas dalam Angular dan lihat cara menggunakannya Analisis ringkas komponen bebas dalam Angular dan lihat cara menggunakannya Jun 23, 2022 pm 03:49 PM

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!

See all articles