J'ai un composant appelé button-search
qui comporte une liste déroulante avec des options de recherche :
<button-search>
<item type="identifier">Identifier</item>
<item type="title">Title</item>
<item type="city">City</item>
<item type="town">Town</item>
<item type="address">Address</item>
<item type="postal">Postal</item>
<item type="divider"></item>
<item type="clear">Clear Search</item>
</button-search>
Le site item
n'est pas censé rendre quoi que ce soit directement et sert plutôt à transmettre des paramètres complexes dans le composant button-search
de sorte que le button-search
peut rendre ces éléments de la liste déroulante de la manière dont ils doivent être rendus.
Item
est défini comme suit :
@Component(
selector: 'item',
template: '')
class Item {
@Input() String type = "type-goes-here";
}
ButtonSearch
est défini comme suit :
@Component(
selector: 'button-search',
directives: const[Item],
template: '''
... enormous template ...
''')
class ButtonSearch {
ButtonSearch(@ViewChildren(Item) QueryList<Item> items){
print(items);
}
}
Au lieu de voir une liste de 9 éléments s'afficher dans la console, tout ce que je vois est le suivant []
.
J'ai essayé d'utiliser un paramètre de type String au lieu d'un objet, mais cela me donne toujours null.
ButtonSearch(@ViewChildren('item') QueryList<Item> items){
-
Qu'est-ce que je rate pour faire
@ViewChildren
récupérer tous les éléments et imprimer quelque chose d'autre que[]
-
Y a-t-il quelque chose de spécial à faire pour obtenir le texte entre
<item>
y</item>
ou volonté@ViewChild
travailler pour cela ?
Mise à jour : Modification du modèle pour inclure <ng-content></ng-content>
:
template: '''
<ng-content></ng-content>
... enormous template ...
''')
Je peux voir que ce qui suit est imprimé dans le navigateur en tant que partie de l'écran d'accueil. button-search
composant :
Identifiant, Titre, Ville, Adresse, Poste, Recherche claire
Au moins, je sais que la page sur laquelle je me trouve contient des éléments dans sa base de données. button-search
composant.