Angular template ng-template/container/content


1. ng-template

  • 形式:<ng-template>...</ng-template>
  • 默認ng-template中的內容會隱藏;
  • 可通過[ngIf]來控制內容顯示隱藏;
  • 此標簽不會影響原本html結構;

html:


<ng-template [ngIf]="true">
  this is template!
</ng-template>

瀏覽器輸出:

瀏覽器調試窗口

2. template

  • 形式:<template>...</template>
  • 默認內容會隱藏;
  • 可通過Css樣式display來控制內容顯示隱藏;
  • 此標簽會影響原本html結構;

html:


<template style="display: block;">
  block;
</template>

瀏覽器輸出:

瀏覽器調試窗口:

3. ng-container

  • 形式:<ng-container>...</ng-container>
  • 默認內容顯示;
  • 可通過*ngIf來控制內容顯示隱藏;
  • 此標簽不會影響原本html結構;

html:


<ng-container>
  this is container!
</ng-container>

瀏覽器輸出:

瀏覽器調試窗口:

4. ng-content

  • 形式:<ng-content select = 'DOM標簽/class類/id/屬性等'>...</ng-content>
  • 用於內容映射,可以定制可復用組件;
  • 引用此組件時,selector標簽中間的內容將投射(或者說插入)到此組件的ng-content中;
  • 此標簽上有一個select屬性,查找可以與select值相符合的內容,映射到此處;它的值可以為別的組件的selector、html標簽、class類或ID等;

(1). 無select屬性情況下的代碼:


// 子組件

@Component({
  selector: 'app-child',
   template: `<ng-content></ng-content>`
})

// 父組件

@Component({
  selector: 'app-parent',
   template: `

<app-child>內容映射1</app-child>

<app-child>內容映射2</app-child>`
})

瀏覽器輸出:

瀏覽器調試窗口:

(2). 有select屬性情況下的代碼:

// content-component.html
<div>
  <ng-content select="h3.title"></ng-content>
  <ng-content select="p.intro"></ng-content>
  <div class="content-cmp">
    <ng-content select="app-extra"></ng-content>
  </div>
</div>
// parent-component.html
<app-content>
    <p class='intro'>段落</p>
    <h3 class='title'>標題</h3>
    <app-extra></app-extra>
</app-content>

瀏覽器輸出:

4-1. 獲取 <ng-content></ng-content>映射的內容

  • ContentChild - 獲取單個實例
  • ContentChildren - 以QueryList 形式返回多個實例
// content.component.ts
@ContentChild(ExtraComponent) extraCmp: ExtraComponent;

// 獲取到之后可以在ngAfterContentInit()方法中操作extraCmp組件實例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM