2017-01-24 21 views
7

içinde yapmak mümkün mü? Yalnızca içerik aktarılmadığında görünecek varsayılan içerik sağlamak istiyorum.Koşullu içerik projeksiyonunu (transclusion) açısal 2+

<article> 
    <header> 
     <ng-content select="[header]"></ng-content> 
    </header> 
    <section> 
     <ng-content></ng-content> 
    </section> 
</article> 

bu gibi kullanabilirsiniz: Örneğin:

İşte benim bileşen şablon

<my-component> 
    <h1 header>This is my header</h1> 
    <p>This is my content</p> 
</my-component> 

i varsayılan bir başlık sağlamayı istiyorsa Şimdi ne olacak. Mümkün mü; ngAfterContentInit içeriğinde kontrol gibi akrobasi olmadan?

+1

encapsulation: ViewEncapsulation.None Bu yanıt http://stackoverflow.com/a/38692980/373655 bir göz atın. 'NgAfterContentInit' – rob

+0

gerektirmeyen daha zarif bir çözümün olup olmadığından emin değil misiniz? Ayrıca, bir projeksiyonu taklit edebilir misiniz? '' – Cody

cevap

3

Bunu saf CSS ile yapabilirsiniz! Hiçbir başlık verilirse

.header + .default-header { 
    display: none; 
} 

ardından görüntü:: yok olana denk değildir içerik verilir o zaman aşağıdaki CSS başlığını saklasın

<ng-content select=".header"></ng-content> 
<h1 class="default-header"> 
    This is my default header 
</h1> 

aşağıdakilerin bulunması hayal .

Not, bu kullanmak için içerik kapsülleme kapatmak gerekir:

+2

Clever, Ben hiçbir zaman kardeş seçimi düşünemiyorum. (belki ben çok eski okulum?) – dovidweisz