Se connecter

Informatique

Création de sites web

Sujet : Angular: recharger une page
1
Pseudo supprimé
Niveau 20
24 juin 2022 à 18:46:52

Salut, j'aimerais pouvoir recharger une page lorsque je change de route, car mon composant doit aller chercher des infos dans un fichier texte mais les informations ne chargent que si la page est refresh.

J'ai donc essayé ceci, mais je ne vois aucun changement:

this.router.navigate([
      'print/'
      + this.route.snapshot.params['cat']
      +'/'
      + this.route.snapshot.params['subCat']
    ]);

et également ceci, mais la page ne charge plus rien dans ce cas :( :

this.router.navigate([
      'print/'
      + this.route.snapshot.params['cat']
      +'/'
      + this.route.snapshot.params['subCat']
    ]).then(() => {
      window.location.reload();
    });

(ma route est censée être: http://localhost:port/print/catégorie/sous-catégorie)

Est-ce que vous auriez une idée de quoi faire ?

xerusmb
Niveau 6
24 juin 2022 à 22:07:28

Essaie un window.location.href = "ton_url.html"

xerusmb
Niveau 6
24 juin 2022 à 22:15:47

il me semble que pour utiliser location.reload() tu ne dois pas utiliser de port dans l'url

https://developer.mozilla.org/fr/docs/Web/Security/Same-origin_policy

Deux pages ont la même origine si le protocole, le port (si spécifié) et l'hôte sont les mêmes pour les deux pages.

Pseudo supprimé
Niveau 20
25 juin 2022 à 16:19:20

Le 24 juin 2022 à 22:07:28 :
Essaie un window.location.href = "ton_url.html"

ça change rien 😢mais merci pour ton aide !

Le 24 juin 2022 à 22:15:47 :
il me semble que pour utiliser location.reload() tu ne dois pas utiliser de port dans l'url

https://developer.mozilla.org/fr/docs/Web/Security/Same-origin_policy

Deux pages ont la même origine si le protocole, le port (si spécifié) et l'hôte sont les mêmes pour les deux pages.

Angular me met un port par défaut dans l'URL, il peut pas marcher autrement ? :(

Pseudo supprimé
Niveau 20
25 juin 2022 à 16:22:24

alors, je viens de griser (commenter) des lignes qui se trouvaient juste au-dessus (c'était une autre tentative de ma part de forcer à refresh la page):

// this.router.routeReuseStrategy.shouldReuseRoute = () => {
    //   return false;
    // };

et à présent, Angular recharge la page à l'infini 😭(ça refresh indéfiniment)

Pseudo supprimé
Niveau 20
25 juin 2022 à 16:41:17

c'est curieux car si je fais une redirection vers l'accueil:

this.router.navigate([
      'print/'
      + this.route.snapshot.params['cat']
      +'/'
      + this.route.snapshot.params['subCat']
    ]).then(() => {
      window.location.href="/home"
    });

ça fonctionne ! Par contre, j'ai l'impression que ça ne marche pas à partir du moment où je fais une redirection utilisant des paramètres dans la route :( je comprends vraiment plus rien

Pseudo supprimé
Niveau 20
25 juin 2022 à 17:45:23

BON, alors, finalement, ça marche bien avec ceci:

this.router.routeReuseStrategy.shouldReuseRoute = () => {
      this.commandsService.deleteArr();
      return false;
    };

en jetant un coup d’œil à la console, je me suis rendue compte que les requêtes GET se faisaient bel et bien. Je pensais qu'elles n'avaient pas lieu, car en changeant de route, les informations du component (fichier .txt chargé dans un tableau) ne changeaient pas (sauf la première ligne du tableau qui s'actualisait, donc bon... :rire:)

En fait, le problème venait d'ailleurs: pour actualiser correctement le tableau avec les infos de mon fichier txt, j'ai dû réinitialisé mon tableau pour repartir de zéro (qui correspond à la ligne this.commandsService.deleteArr(); ).

Voilà, c'est tout :hap:
Je pensais qu'en changeant de route, je n'aurais pas besoin de réinitialiser mon tableau, mais bon...

1 journée + 1 après midi de flinguée sur ce problème... je commençais à devenir folle 😭

Merci pour ton aide en tout cas xerusmb! :ange:

1
Sujet : Angular: recharger une page
   Retour haut de page
Consulter la version web de cette page