J'ai essayé d'obtenir une valeur de variable de composant où DialogDictionMeSypesPomponent P> a: P> pourquoi je reçois une erreur: p> dialogdicationAiSeypesComponce code> à l'aide de ce:
3 Réponses :
Vous devez probablement utiliser un sujet de service et de RXJS. Jetez un coup d'œil HTTPS: //jasonwatmore.com/post/2018/06/25/angular-6-CommunicationD-Between-Components-with-ObServable-subject P>
Vous pouvez dire que @viewchild code> n'est utilisé que si un composant à l'intérieur d'une autre?
Je ne veux pas utiliser `Rxjs Subject` aucune suggestion?
Toujours en utilisant un service de quelque sorte est le moyen d'aller ici. Un service peut encore avoir son propre état avec votre type préféré, sans se limiter à un observable. Lisez sur Singleton Services ici: Angular.io/Guide/singleton-services
Vous pouvez également partager des données via le service.
@Jony sans rxjs Vous ne pouvez pas utiliser les changements d'observateurs effectués sur la propriété de dictionnaires.
Si vous en avez vraiment besoin dans le Après avoir lu votre titre, je vois que le composant que vous recherchez est-pas d'enfant. Dans ce cas, vous devez utiliser un service et injecter ce service dans les deux composants. P> En outre, votre première pensée d'accès à des données des composants est un peu défectueuse. Vous ne devriez jamais faire cela, car les composants sont simplement utilisés pour les vues et les interactions avec la vue et non pour le stockage de données. Essayez de les garder aussi bêtes que possible. P> Dans cet exemple, ces composants enregistreront le même tableau de dictionnaire. Ceci est cependant très rudimentaire et vous devriez vraiment regarder en utilisant des flux de données à l'aide de RXJS pour faciliter votre vie (peut-être même la gestion de l'État). Plus fort au début, je suis d'accord, mais une fois que vous avez eu la suspension, votre code sera très heureux avec vous. p> p>
Lorsque vous utilisez ViewChild code> avec
{statique: faux} code> La propriété est disponible dans (et après) le
ngafterviewInit code> crochet grève>
Ngoninit code>, vous pouvez définir statique sur
vrai code>, mais soyez conscient que si vous avez une directive structurelle entourant votre enfant. composant, cela échouera.
P>
ViewChild code> est uniquement utilisé pour obtenir une référence d'un composant ou d'une instance HTMLElement code> déclarée à l'intérieur de votre composant p>
blockQuote>
Je ne suis pas sûr de pouvoir accéder directement à une composante enfant comme ça.
Seulement dans ngafterviewinit code>?
@Jony j'ai mis à jour ma réponse à plus soyez en ligne avec votre question :)
dans les services angulaires servent à partager des données avec des composants. P>
Les composants ne doivent pas récupérer ou enregistrer directement des données et elles sont certainement ne devrait pas sciemment présenter de fausses données. Ils devraient se concentrer sur la présentation Données et déléguer l'accès des données à un service. P> blockQuote>
https://angular.io/taturial/toh-pt4 p>
Je créerais un service aux données stockées dont j'ai besoin dans un composant différent n'est pas un enfant. p>
Pour quoi il existe alors visualiskchild?
Comme son nom l'indique, il est utilisé pour accéder à des composants enfants en fonction de votre question, vous essayez d'accéder aux données d'un composant qui n'est pas un composant enfant à celui de votre choix. Si je peux demander, vos composants sont référencés par un séparé Composant parent? angular.io/api/core/viewchild#description En fonction de votre situation une autre façon de Partager des données entre les composants consiste à utiliser le décorateur @Output et à émettre des modifications à une variable accessible par d'autres composants NIVELUP.GITCONCONNECTECT.COM /.../a>
Les composants de dialogue généralement ouverts de manière dynamique sur le portail. Dans ce cas, ce n'est pas le cas. enfant et
@viewchild code> ne peut pas le trouver. Si oui, lorsque vous ouvrez la boîte de dialogue, vous devez enregistrer la référence à la composante de la boîte de dialogue pour y accéder, mais une meilleure solution est une utilisation utilisée qui émettent à la fin de la boîte de dialogue et de retourner la valeur attendue.
Pouvez-vous montrer votre modèle?