Angulaire 4 - Route Activée avec param
J'ai une liste de page et une page de détail. En sélectionnant un élément de la liste de la page à la page de détails.
module de routage:
const itemRoutes: Routes = [
{ path: 'item', component: ItemListComponent},
{ path: 'item/:id', component: ItemDetailComponent }
];
liste de composant:
constructor( private route: ActivatedRoute, private router: Router) {}
goToDetail(item) {
this.router.navigate(['item'], {id: item.id});
}
Problème:
La sélection d'un élément passe à cette adresse:
http://localhost:3000/item/2
Mais le navigateur affiche "Pas trouvé d'erreur".
Sur la console, je vois ceci:
:3000/item/2:1 GET http://localhost:3000/item/2 404 (Not Found)
Navigated to http://localhost:3000/item/2
Ce que je fais mal?
Ne devrait-elle pas être
Toujours le même problème - "Non trouvé".
Ne vous actualisez la page, après la navigation, ou pensez-vous naviguer?
this.router.navigate(['item', item.id])
?Toujours le même problème - "Non trouvé".
Ne vous actualisez la page, après la navigation, ou pensez-vous naviguer?
OriginalL'auteur Jay | 2017-04-18
Vous devez vous connecter pour publier un commentaire.
Je pense que le problème est que j'ai eu ce sur le code html pour la page de la liste:
Je l'ai changé pour:
et enlevé ce à partir de la composante:
Cela a fonctionné!
OriginalL'auteur Jay
Vos routes sont bien définis. Mais vous avez 3 principes de base des moyens de redirection: href, routerLink et routeur.naviguer.
Le classique href propriété dans une balise d'ancrage HTML
Celui-ci est à l'extérieur Angulaire de contrôle. Dans le modèle (fichier html) de votre Élément Liste composant vous pouvez ajouter la simple ancrage balise html:
Mais, parce que de cette façon est à l'extérieur Angulaire de contrôle, vous devez utiliser cette solution peut-être pour l'extérieur perdurable statique url. Comme une Page Google, Facebook, Page, etc.
Donc, dans ce scénario: L'utilisateur interagit avec votre DOM et votre DOM va déclencher un événement à faire de votre navigateur de vous rediriger.
À l'aide de routerLink attribut
Cette solution nécessite la RouterModule importés en quelque sorte à votre ngModule de travail. La façon la plus simple pour ce faire, dans votre module principal (Communément app.le module.ts) vous avez besoin d'ajouter:
Et ajouter RouterModule à l'intérieur de la importations de tableau dans votre @NgModule décorateur.
Puis dans le modèle de votre ItemListComponent, vous pourriez référence à un chemin d'accès statique, ou générer dynamiquement d'un.
Pour faire référence à un chemin d'accès statique, vous devez seulement ajouter de la routerLink attribut avec votre chemin, comme une valeur:
Remarque:
<...></...>
signifie que la balise que vous utilisez ne importe pas si sa le rendu de votre page.Pour faire référence à un lien généré, par exemple
model/item/4
, vous devez ajouter le routerLink attribut comme un entrée (Entre[]
), et un tableau de segments du chemin qui contient chaque segment dans un sequencial ordre:Être élément un accesible objet sur votre modèle (variable publique à l'intérieur de la classe composant OU une variable déclarée dans le modèle comme l'utilisation de
*ngFor="let item of items"
) avec un id comme une propriété.Remarque: Vous pouvez simplifier ce lien à l'aide de
[routerLink]="['/model/item', item.id]"
, parce que/model/item
est statique dans l'url.Donc, dans ce scénario: L'utilisateur interagit avec votre DOM, votre DOM fera appel à la RouterModule, et ce dernier se mettra fin à la recherche d'un match à l'intérieur de vos itinéraires de faire Angulaire de vous rediriger.
À l'aide de la méthode de naviguer à partir de Routeur de classe.
Cette solution aditionally nécessite la Routeur importés et injecté dans le composant que vous souhaitez gérer le parcours (ItemListComponent dans ce cas - ItemList.composante.ts fichier).
Pour importer le Routeur, ajouter ceci:
À injecter; ajouter à la constructeur:
Ensuite, ajouter le méthode vous souhaitez gérer la redirection dans votre classe, comme celui que vous avez ajouté:
Et enfin, vous devez ajouter dans votre modèle un événement qui fera appel à votre fonction. Par exemple:
Donc, dans ce scénario: L'utilisateur interagit avec votre DOM, votre DOM déclenche un événement qui va déclencher une méthode de la classe qui va appeler la méthode naviguer de Routeur classe, qui prendra fin à la recherche, enfin, pour un match à l'intérieur de vos itinéraires de faire Angulaire de vous rediriger.
OriginalL'auteur Francute
Il existe trois différents types de paramètres que vous pouvez utiliser avec Angulaire:
required
,optional
, etquery
paramètres.Pour la gestion des id sur une page de détail que vous avez dans votre exemple, vous plus susceptibles de vouloir utiliser
required
paramètres.Votre configuration pour
required
paramètres est correcte.Mais votre navigation sur le paramètre est à l'aide de la
optional
la syntaxe de paramètre.Le modifier:
Required
paramètres doivent être définis dans le tableau.Pour une discussion détaillée des trois différents types de paramètres, découvrez cette Pluralsight cours: https://app.pluralsight.com/library/courses/angular-routing
Pouvez-vous poster plus de votre code?
OriginalL'auteur DeborahK
s'il vous plaît essayez celui-ci:
.routeur.naviguer(['item'+item.id]);
OriginalL'auteur Kinnera Reddy