Angular組件——投影


運行時動態改變組件模版的內容。沒路由那么復雜,只是一段html,沒有業務邏輯。

ngContent指令將父組件模版上的任意片段投影到子組件上。

一、簡單例子

1、子組件中使用<ng-content>指令來標記投影點

<div class="wrapper">
  <h2>我是子組件</h2>
  <div>這個div定義在子組件中</div>
  <ng-content></ng-content> 
</div>

2、父組件中把要投影到子組件的投影點的html片段寫到子組件的標簽中

<div class="wrapper">
  <h2>我是父組件</h2>
  <div>這個div定義在父組件中</div>
  <app-child2>
    <div>這個div是父組件投影到子組件中</div>
  </app-child2>
</div>

效果:

子組件加樣式:

.wrapper{
    background: lightgreen;
}

父組件加樣式:

.wrapper{
    background: cyan;
}

2、多個<ng-content>投影點

子組件:

<div class="wrapper">
  <h2>我是子組件</h2>
  <ng-content selecter=".header"></ng-content>
  <div>這個div定義在子組件中</div>
  <ng-content selecter=".footer"></ng-content> 
</div>

父組件:

<div class="wrapper">
  <h2>我是父組件</h2>
  <div>這個div定義在父組件中</div>
  <app-child2>
    <div class="header">這是頁頭,這個div是父組件投影到子組件中,title是{{title}}</div>
    <div class="footer">這是頁腳,這個div是父組件投影到子組件中</div>
  </app-child2>
</div>

頁頭和頁腳被投影到子組件中,同時title也被投影過去。

父組件模版中投影內容中插值表達式只能綁定父組件中的屬性,雖然內容會被投影到子組件中去。

3、Angular屬性綁定的方式插入html 

 在父組件模版中加一行:

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

父組件中加一個divContent屬性,內容就是一段html片段。

divContent="<div>屬性綁定綁innerHTML</div>";

效果

4、對比ngContent指令和屬性綁定innerHTML方式

[innerHTML]是瀏覽器特定的API。

ngContent指令平台無關。可綁定多個投影點。

優先考慮ngContent指令。

 

本文作者starof,因知識本身在變化,作者也在不斷學習成長,文章內容也不定時更新,為避免誤導讀者,方便追根溯源,請諸位轉載注明出處:http://www.cnblogs.com/starof/p/8743223.html  有問題歡迎與我討論,共同進步。


免責聲明!

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



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