
Salut l'ami Angular ! T'es-tu déjà retrouvé dans cette situation frustrante ? Tu as une variable super importante, genre, le nom d'utilisateur connecté ou le thème préféré de l'application... et POUF ! Elle disparaît comme par magie à chaque chargement de page. C'est plus un tour de magie qu'un code, non ? Pas de panique ! On va voir ensemble comment résoudre ce petit souci.
Le problème : Angular et la mémoire à court terme
Angular, c'est super puissant, mais par défaut, c'est un peu comme Dory dans Le Monde de Nemo : une mémoire à très court terme. Chaque fois que ton application recharge, tout est remis à zéro. Ta variable, elle se dit : "Tiens, je suis qui, déjà ?". Pas idéal, on est d'accord.
Mais alors, comment faire ? Il existe plusieurs solutions, chacune avec ses avantages et ses inconvénients. On va les explorer ensemble, promis, sans trop de blabla technique barbant. On va faire ça comme si on était au café, avec un bon croissant !
Solution n°1 : Le Local Storage, ton allié discret
Le Local Storage, c'est comme une petite armoire de rangement dans ton navigateur. Tu peux y stocker des données sous forme de chaînes de caractères et les récupérer même après un rechargement de page. C'est un peu comme cacher un biscuit dans la boîte à gâteaux, mais en plus propre !
Comment ça marche ? C'est simple comme bonjour ! Tu utilises les fonctions `localStorage.setItem('maVariable', JSON.stringify(maVariable))` pour stocker ta variable (attention, il faut la convertir en chaîne JSON) et `JSON.parse(localStorage.getItem('maVariable'))` pour la récupérer.
![[Résolu] [Ajax] Garder la valeur du champ après une requête par](https://user.oc-static.com/upload/2020/01/21/15796228828304_Ecran.png)
Attention ! Le Local Storage ne stocke que des chaînes de caractères. Donc, si ta variable est un objet ou un tableau, pense bien à utiliser `JSON.stringify()` et `JSON.parse()`. C'est comme traduire du français en anglais et vice versa !
Solution n°2 : Le Session Storage, pour les données éphémères
Le Session Storage, c'est comme le Local Storage, mais avec une durée de vie limitée. Les données sont conservées tant que l'onglet du navigateur est ouvert. Dès que tu le fermes, pouf, tout disparaît. C'est comme un post-it que tu jettes à la fin de la journée.
![[Résolu] [Ajax] Garder la valeur du champ après une requête par](https://user.oc-static.com/upload/2020/01/23/15797693649638_FormulaireBase.png)
L'utilisation est exactement la même que pour le Local Storage, sauf que tu utilises `sessionStorage` au lieu de `localStorage`. Pratique pour les données qui ne doivent pas persister indéfiniment.
Solution n°3 : Les Services Angular, les pros de la persistance
Les Services Angular, c'est là où ça devient intéressant. Tu peux créer un service qui gère tes données et les conserve en mémoire. C'est comme avoir un majordome qui se souvient de tout pour toi !
Comment ça marche ? Tu crées un service avec `@Injectable()`. Dans ce service, tu définis une variable qui stocke tes données. Ensuite, tu injectes ce service dans tes composants et tu utilises les méthodes du service pour lire et modifier la variable. C'est un peu plus complexe que le Local Storage, mais c'est beaucoup plus propre et organisé.

L'avantage principal, c'est que tu peux utiliser un BehaviorSubject pour notifier les composants à chaque changement de la variable. C'est comme un système d'alerte : "Hé, la donnée a changé, mets à jour ton affichage !".
Solution n°4 : NgRx ou Akita, les poids lourds de la gestion d'état
Si ton application devient grosse et complexe, tu peux envisager d'utiliser une librairie de gestion d'état comme NgRx ou Akita. C'est comme passer d'un vélo à une voiture de course !

Ces librairies te permettent de gérer l'état de ton application de manière centralisée et prévisible. C'est un peu plus compliqué à mettre en place, mais ça vaut le coup si tu as beaucoup de données à gérer et que tu veux une application robuste et performante.
Conclusion : Choisis la solution qui convient le mieux à ton besoin et à la taille de ton application. Le Local Storage est parfait pour les petites applications simples, les Services Angular sont un bon compromis pour les applications de taille moyenne, et NgRx ou Akita sont idéaux pour les grosses applications complexes.
Voilà, j'espère que cet article t'a été utile ! N'oublie pas, coder c'est comme cuisiner : il faut expérimenter, goûter, et parfois, ajouter un peu de piment ! Alors, amuse-toi bien et n'hésite pas à revenir si tu as d'autres questions. À bientôt ! Et surtout, garde le sourire ! 😉