IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

router.navigate ne marche pas angular 9


Sujet :

Angular

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 92
    Points : 61
    Points
    61
    Par défaut router.navigate ne marche pas angular 9
    Bonjour,

    Je suis en Angular 9 et j'ai créé deux components , first component et second component.

    app.routing
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const routes: Routes = [
      { path: "", component: HomeComponent },
      { path: "home", component: HomeComponent },
      { path: "firstcomponent", component: FirstComponent },
      { path: "secondcomponent", component: SecondComponent },
      { path: "**", component: PagenotfoundComponent }
    ];

    home.component.html
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ng-container *ngFor="let cat of category; let index=index">
    	 <div>
    	   <a href="#" (click)="detailCategorie(cat.id)" >
    	      <img [src]="cat.url"
    	      [alt]="cat.nom" [title]='cat.nom' />
    	   </a>
    	 </div>
     </ng-container>

    home component.ts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    detailCategorie(id:number){
     
           this.service.getCategorie(id).subscribe(data=>{
            this.categorie = data;
         },err=>{
         	console.log("Erreur retourne categorie choisie : ",err);
         });
     
         let nomCategorie : string = this.categorie.nom;
     
     
      	switch (nomCategorie) {
        case 'first':
            this.router.navigate(["/firstcomponent"]);
            break;
        case 'second':
            this.router.navigate(["/secondcomponent"]);
            break;
        default:
            console.log("No categorie exists!");
            break;
    	}
      }

    Mon soucis est quand je clique sur l'image, il me ramène bien vers le path m'affiche le résultat de la page puis la page se rafraîchit toute seule et retourne à HomeComponent(http://localhost:4200).

    Que faire sachant qe j'ai essayé les deux possibilités : this.router.navigate(["/secondcomponent"]); et this.router.navigate(["secondcomponent"]);

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    detailCategorie(id:number){
     
           this.service.getCategorie(id).subscribe(data=>{
            this.categorie = data;
     
         let nomCategorie : string = this.categorie.nom;
     
     
      	switch (nomCategorie) {
        case 'first':
            this.router.navigate(["/firstcomponent"]);
            break;
        case 'second':
            this.router.navigate(["/secondcomponent"]);
            break;
        default:
            console.log("No categorie exists!");
            break;
    	}
     
         },err=>{
         	console.log("Erreur retourne categorie choisie : ",err);
         });
      }

    attention aux observables qui fonctionnent en asynchrone

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    Bonjour @krakatoa,

    même avec ton code, j'ai toujours le même problème, il m'amène bien vers la route souaité , mais après vient un rafraîchissement puis retour vers localhost:4200.

    Comment puis contourner cela. Pour être encore un peu plus claire, j'ai sur ma page d'accueil 4 images provenant de mon objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    myCategories = [
      {id:1,pictureURL:'asset/mypict1.png',nom:'first'},
      {id:2,pictureURL:'asset/mypict2.png',nom:'second'},
      {id:3,pictureURL:'asset/mypict3.png',nom:'third'},
      {id:4,pictureURL:'asset/mypict4.png',nom:'fourth'}
    ]
    Et je veux au click d'une image (une de ces 4 images)de ma page home.compononent.html, je sois redirigé vers les differents componenet (firstcomponent, secondcomponent, ...).
    Et dans home.component.ts , je fais ce traitement là avec detailCategorie.

    Comment faire ?

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    j'ai testé et ça fonctionne chez moi

    as tu une erreur dans la console des outils de dev du navigateur ?


    j'ai adapté le code et forcé certaines valeurs pour avoir le meme comportement que toi
    avec mon code, ça doit toujours sur 'first' quelquesoit le choix donc
    et ça fonctionne parfaitement ! (pas de recharge)

    #HomeComponent.html
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <p>
      home works!
    </p>
     
    <!--The content below is only a placeholder and can be replaced.-->
    <ng-container *ngFor="let cat of category; let index=index">
      <div>
        <a href="#" (click)="detailCategorie(cat)" >
            {{cat}}
        </a>
      </div>
    </ng-container>

    #HomeComponent.ts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    export class HomeComponent implements OnInit {
      private usersUrl = 'https://jsonplaceholder.typicode.com/users';        // pour tester le fait d'aller chercher des données
      category = [1, 2, 3];                                                   // des données au hasard
     
      constructor(private router: Router, private http: HttpClient) { }
     
      ngOnInit() {
      }
     
      detailCategorie(id){
     
        this.http.get(this.usersUrl).subscribe( (data: any) =>{
     
          // ...
          let nomCategorie = 'first';
     
          switch (nomCategorie) {
          case 'first':
              this.router.navigate(["/firstcomponent"]);
              break;
          case 'second':
              this.router.navigate(["/secondcomponent"]);
              break;
          default:
              console.log("No categorie exists!");
              break;
          }
        });
      }

    #AppRoutingModule.ts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
    import { HomeComponent } from './home/home.component';
    import { FirstComponent } from './first/first.component';
    import { SecondComponent } from './second/second.component';
     
    const routes: Routes = [
      { path: "", component: HomeComponent },
      { path: "home", component: HomeComponent },
      { path: "firstcomponent", component: FirstComponent },
      { path: "secondcomponent", component: SecondComponent },
     
    ];
    ...

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    Bonjour @dukoid,

    j'ai finalement trouvé la solution, il fallait supprimer l'attribut href dans la balise <a>

    Encore merci.

  6. #6
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    sinon, si tu utilises ma méthode tu n'a pas besoin d'enlever le href

    j'ai compris pourquoi !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Angular js ne marche pas sur une vue
    Par baba13 dans le forum AngularJS
    Réponses: 2
    Dernier message: 02/11/2015, 11h27
  2. Réponses: 2
    Dernier message: 03/01/2013, 09h56
  3. Navigation Rules ne marche pas
    Par crocodingo dans le forum JSF
    Réponses: 7
    Dernier message: 13/03/2011, 14h10
  4. la navigation ne marche pas
    Par emenemza dans le forum JSF
    Réponses: 2
    Dernier message: 05/12/2008, 11h49
  5. navigation-rule ne marche pas
    Par verbose dans le forum JSF
    Réponses: 5
    Dernier message: 10/10/2007, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo