Le résultat d'une child query obligatoire (contentChild.required ou viewChild.required) a été lu avant le calcul des résultats de la query, ou la query n'a aucune correspondance.
Cela peut se produire dans deux situations distinctes :
- les résultats de la query ont été lus avant que la query ait pu collecter ses résultats ;
- une query a été exécutée mais n'a trouvé aucun nœud correspondant et n'a donc aucun résultat.
Les content queries et les view queries calculent chacune leurs résultats à des moments différents :
- les résultats de
contentChildsont disponibles après la création d'une host view (le template dans lequel est utilisée une directive déclarant une query) ; - les résultats de
viewChildsont disponibles après la création du template d'un composant déclarant une query.
Lire les résultats d'une query avant qu'ils ne soient disponibles provoque l'erreur décrite sur cette page. En particulier, les résultats d'une query ne sont jamais disponibles dans le constructeur du composant ou de la directive qui déclare la query.
Corriger l'erreur
Les résultats d'une query contentChild peuvent être lus dans le lifecycle hook AfterContentChecked, ou plus tard.
Les résultats d'une query viewChild peuvent être lus dans le lifecycle hook AfterViewChecked, ou plus tard.
Assurez-vous qu'une query obligatoire correspond à au moins un nœud et a bien des résultats. Vous pouvez le vérifier en lisant les résultats de la query dans les lifecycle hooks listés ci-dessus.