0
votes

Angulaire: aucun moyen de passer un objet à travers un routeur?

J'ai essayé de trouver une solution simple.

J'ai un pour la boucle d'affichage d'une liste d'éléments. En cliquant sur l'un des éléments que vous avez des itinéraires sur le composant détaillé et que je veux juste que l'élément sélectionné soit disponible dans le composant détaillé. Pour une raison quelconque, il n'y a pas de solution simple (dont je suis au courant). Je m'attendrais à ce qu'il y ait quelque chose comme ceci:

`` ``

C'est ce que je veux. Mais, bien sûr, cela ne fonctionne pas.

Ainsi, je passe à la place de l'identifiant d'élément en tant qu'élément QueryParams, puis effectuez un appel de service sur le composant de détail pour récupérer l'élément. Cela fonctionne bien, mais semble être beaucoup de travail à faire quelque chose qui devrait être si simple.

Est-ce que je manque quelque chose?


0 commentaires

5 Réponses :


0
votes

S'il vous plaît essayez comme ça xxx


1 commentaires

cela ne fonctionne pas. Et même si cela le faisait, cela passerait simplement l'identifiant. J'espère que l'objet entier (produit) dans son intégralité.



2
votes

Les objets passés par routage sont des options limitées. L'utilisation d'un service est la meilleure option. Si vous fournissez une instance de service par le parent composant, puis le même instance est injecté dans le parent et l'enfant et vous avez les données partagées disponibles immédiatement.

HTTPS: / /Stackblitz.com/edit/angular-6-Communicating-between-Components-1gunkw?file=app%2fapp.component.ts


2 commentaires

Si je ne me trompe pas, cela parle de composants parent-enfant de la même vue, par opposition à un composant d'affichage issu d'une autre vue complètement différente.


Oui, tu as raison. L'itinéraire angulaire a un impact sur l'URL lorsque vous passez un paramètre à suivre.



0
votes

Ce que je pense sur la raison pour laquelle il n'ya aucun moyen de passer un objet via un routeur est parce que si vous passez les données et le rendus disponible sur le route2 ,

Les données sont disponibles sur le itout2 juste parce qu'il est transmis à partir de route1 .

Que se passe-t-il si vous actualisez route2 ??

d'où obtiendrez-vous les données pour route2 , votre page s'effondrerait.


2 commentaires

Je ne sais pas. Je suis habitué au développement de l'objectif C iOS et il est extrêmement simple de transmettre tout type d'objet de données d'une VC à une autre. Mais peut-être que vous avez raison. Dans iOS, il n'y a pas de tel concept de rafraîchissement.


Et le développement de l'application mobile est différent du développement de l'application Web. Le développement de l'application mobile aura un cycle de vie propre, même si vous minimisez / terminez l'application et ouvrez-la à nouveau, il ouvrira un écran spécifique. comme onresume événement ou quelque chose.



0
votes

de Angular 7.2 Vous pouvez transmettre l'argument au routeur, voir Ce lien superbe

in .html Vous devez utiliser [état], par exemple xxx

deux obtenir l'état que vous avez deux options, de une composante non principale-application, voir Cette réponse , de l'application principale que vous pouvez vous abonner à router.vents < / p> xxx

REMARQUE: Si vous utilisez cette APRAOD, rappelez-vous que si vous accédez directement à votre "élément", vous possédez un "élément"


0 commentaires

2
votes

Vous ne voulez pas payer un objet à travers un routeur. Au lieu de passer une pièce d'identité, puis reprochez l'élément de la nouvelle page. De cette façon si vous actualisez la nouvelle page, tout fonctionne toujours.


0 commentaires