Angulaire 2 de sortie du routeur-prise
Je veux faire de la navigation de l'enfant composants de rendu à l'intérieur de routeur de sortie.
Mon composant parent ont un routeur config et je veux naviguer manuellement dans certains cas. Mais je ne sais pas comment je peux passer d'un enfant à un parent, des données (pour la navigation) sans sortie. Parce que cette construction est non travail
<router-outlet (navigateTo)="navigateToMessagePart($event)"></router-outlet>
Comment je peux le faire dans le droit chemin? Peut-être naviguer de l'enfant? Mais comment je peux obtenir des méthodes parents de l'enfant.
Merci beaucoup pour toute aide!
Vous devez vous connecter pour publier un commentaire.
<router-outlet></router-outlet>
est juste un espace réservé pour l'ajout de acheminés composants. Il n'y a pas de support pour tout type de liaison.Vous pouvez créer un
<router-outlet>
qui vous permet de le faire ou de plusieurs communes, l'utilisation d'un service partagé pour la communication entre le composant parent et acheminé composant.Pour plus de détails, voir https://angular.io/docs/ts/latest/cookbook/component-communication.html
mise à jour
Il est maintenant un événement qui permet d'obtenir le composant ajouté
qui permet de communiquer (appel getters, setters, et les méthodes) avec le composant de
componentAdded()
Un service partagé est la meilleure façon de bien.
<router-outlet></router-outlet>
ne peut pas être utilisé pour émettre un événement de l'enfant du composant. Un moyen de communiquer entre les deux composants est d'utiliser un service commun.Créer un service
Maintenant injecter de l'instance du service ci-dessus dans le constructeur de la société mère et de l'enfant composant.
Le composant enfant sera en émettant un changement à chaque fois que le onClick() la méthode est appelée
Le composant parent doit recevoir ce changement. Pour ce faire,la capture de l'abonnement à l'intérieur de la mère du constructeur.
Espère que cela aide 🙂
La réponse donnée ci-dessus est correcte et complète. Je veux juste ajouter que pour ceux qui la solution n'a pas fonctionné pour eux qu'ils doivent ajouter le service à des fournisseurs que dans le composant parent et de l'enfant pour s'assurer que vous obtenez un singleton du service, sinon deux instances de service sera créé.
Cette réponse est inspiré par le commentaire de @HeisenBerg dans la réponse précédente.
providedIn: 'root'
ajouté à laInjectable
décorateur. angulaire.io/guide/...J'ai changé un peu de Antara Datta la réponse.
J'ai créé un service de l'Abonné
Chaque fois que j'ai besoin de deux composants de partager de l'information, j'injecte ce service dans le constructeur qui vous y abonner:
et celui qui la met à jour