2017-02-03 2 views
1

So für bessere Illustration wird vereinfachen und versuchen, so knapp wie möglich zu sein.Angular2: @ContentChild - nur unmittelbare Kinder

<my-accordion> 
    <my-title>My accordion</my-title> 

    <my-accordion-item> 
     <my-title>My accordion item 1</my-title> 
     <my-content>Content 1</my-content> 
    <my-accordion-item> 
    <my-accordion-item> 
     <my-title>My accordion item 2</my-title> 
     <my-content>Content 2</my-content> 
    <my-accordion-item> 
</my-accordion> 

Wie Sie sehen können, verwende ich (mein) Standard my-Titel für my-Akkordeon und my-Akkordeon-Artikel

Also in meinem-Akkordeon-Komponente I die Logik haben

private title:string = ''; 
@ContentChild(myTitle) myTitle: myTitle; 

ngAfterViewInit(){ 
    if(this.myTitle && this.myTitle.content.length !== 0){ 
     this.title = this.myTitle.content; 
    } 
} 

Also, wenn ich meine Ansicht genau wie in meinem vorherigen Beispiel hatte, funktioniert es OK .... und der Titel zurück kommt ist "Mein Akkordeon" aber, wenn ich nicht das My-Titel-Element auf der Wurzel meines Akkordeons .... so:

<my-accordion>   
    <my-accordion-item> 
     <my-title>My accordion item 1</my-title> 
     <my-content>Content 1</my-content> 
    <my-accordion-item> 
    <my-accordion-item> 
     <my-title>My accordion item 2</my-title> 
     <my-content>Content 2</my-content> 
    <my-accordion-item> 
</my-accordion> 

würde der Titel auf „Mein Akkordeon Artikel 1“ gesetzt werden, weil es den ersten my-Titel in dem ganzen DOM Unterbaum

Gibt es eine Möglichkeit sofort Kinder nur zu überprüfen bekommt?

Antwort

Verwandte Themen