42 votes

Quel est l'équivalent du ngcookie d'AngularJS dans Angular 6 ?

Comment créer des cookies dans Angular 6 ? Pour AngularJS, il y avait ngcookie . Quelle est la manière équivalente de créer des cookies dans Angular 6 ?

1 votes

Je suis un peu perplexe quant à la raison pour laquelle cette question a été fermée. C'est une question valide et succincte à laquelle de nombreuses personnes ont répondu par des votes positifs. Les modérateurs ont parfois l'impression d'être des tireurs d'élite à qui on n'a pas dit que la guerre était finie. Descendez juste des arbres les gars

0 votes

@PeterNixey Ce n'est pas parce que beaucoup de personnes ont voté/répondu que la question elle-même est bonne. Le fait de laisser des questions comme celle-ci ouvertes envoie un message aux nouveaux utilisateurs, à savoir que les questions non ciblées du type "Comment faire X", sans recherche personnelle ni tentative de solution, sont acceptables et conformes au sujet. Beaucoup de gens dépassent les limites de vitesse, mais cela ne rend pas la vitesse acceptable.

0 votes

@remy c'est raisonnable mais je ne vois pas en quoi la question est en dehors des limites de vitesse. Elle est incroyablement spécifique - elle fait référence à un utilitaire particulier dans AngularJS et demande quel est l'équivalent dans Angular 6. Ma question initiale était légèrement désinvolte, mais je ne vois vraiment pas en quoi elle n'est pas ciblée.

63voto

M.Laida Points 647
  1. npm install ngx-cookie-service --save
  2. Ajoutez à votre module : import { CookieService } from 'ngx-cookie-service';
  3. Ajouter CookieService aux fournisseurs du module.
  4. Injectez-le dans votre constructeur.
  5. Utilisez cookie.get(nameOfCookie) pour obtenir un cookie spécifique, utilisez cookie.set(nameOfCookie,cookieValue) pour l'ajout d'un nouveau cookie.

5 votes

Je crois que vous avez oublié de mentionner l'ajout au module d'application. Dans votre @NgModule l'ajouter comme fournisseur providers: [ CookieService ]

0 votes

[ts] Impossible de trouver le module 'ngx-cookie-service'. [2307] j'ai essayé de npm i puis ionic serve puis l'erreur s'est produite

0 votes

@CodeWarrior A partir d'angular 5 (ou 6), il n'est pas nécessaire d'ajouter le service dans les providers.

33voto

Rajani Kanth Points 567

Vous pouvez utiliser ce paquet node pour cela

ngx-cookie-service

0 votes

Dans angular, vous pouvez simplement utiliser un stockage local à la place, comme localStorage.setItem(key,value) ;

0 votes

Vous peut mais que faire si vous voulez que la valeur soit stockée pendant 10 minutes et disparaisse ensuite ? Le stockage local ne le permet pas.

33voto

bvdb Points 898

Tout d'abord, vous devez vous demander : "J'ai vraiment besoin de cookies ?" :

Les cookies étaient autrefois utilisés pour le stockage général côté client. Bien que cela soit légitime lorsqu'ils étaient le seul moyen de stocker des données sur le client, il il est recommandé aujourd'hui de préférer les API de stockage modernes . Les cookies sont envoyés à chaque demande, ils peuvent donc détériorer les performances (en particulier pour les connexions de données mobiles). Les API modernes pour le stockage client sont les suivantes Web storage API (localStorage et sessionStorage) et IndexedDB. ( Source : MDN )

Donc, si vous ne l'avez pas encore fait, vous voudrez peut-être lire l'article sur les API de stockage Web à la place.

Si vous souhaitez continuer à utiliser des cookies, veuillez poursuivre votre lecture.

J'ai essayé ngx-cookie-service et ça n'a pas marché pour moi. J'ai rencontré problème sur problème, j'ai fini par en discuter sur github, j'ai essayé de mettre à jour les paquets. Il m'a fallu environ une journée pour me rendre compte que ce dont j'avais besoin ne devait pas être si compliqué, après tout, obtenir/régler des cookies n'est qu'un truc natif de javascript.

Je n'avais plus de temps à perdre, et j'ai écrit ce simple CookieService moi-même. Et je voulais juste le partager avec d'autres développeurs désespérés. :)

Un simple CookieService

J'ai créé ce Gist qui est une alternative légère à ngx-cookie-service.

Configuration et utilisation

Bien sûr, vous devez l'enregistrer dans votre app.module.ts fichier. Ajoutez-le à la liste de vos fournisseurs :

providers: [FooService, BarService, CookieService]

Ensuite, utilisez-le dans vos composants, par exemple comme suit :

private _sessionId: string;

constructor(private cookieService: CookieService) {
  this._sessionId = cookieService.get("sessionId");
}

public set sessionId(value: string) {
  this._sessionId = value;
  this.cookieService.set("sessionId", value);
}

Notez que vous pouvez utiliser les outils de débogage pour vérifier que le cookie est effectivement défini, et pour vérifier qu'il est présent dans les requêtes HTTP suivantes. (captures d'écran de Chrome, mais Firefox et Edge ont des aperçus similaires)

cookie is set

using cookie

0 votes

J'ai essayé de l'utiliser pour obtenir la valeur d'un cookie, mais j'ai obtenu une valeur incorrecte. Le cookie correct a été défini dans une requête get via withCredentials: true . Je veux la valeur du cookie afin de pouvoir l'envoyer dans l'en-tête d'une requête post. Je sais que j'envoie le cookie correct qui est automatiquement défini via withCredentials, mais j'ai besoin d'envoyer un en-tête avec la valeur du cookie.

1 votes

@dannygonzalez Je suppose que vous l'avez vérifié avec les outils de débogage de votre navigateur web. Mais au cas où vous ne l'auriez pas fait, j'ai ajouté quelques captures d'écran pour vous permettre de le vérifier. - Je ne suis pas sûr que cela soit utile pour vous.

0 votes

Merci. Dans mon cas, je veux lire les en-têtes de réponse HTTP de la demande initiale de la page, ce qui, je suppose, n'est pas possible ( stackoverflow.com/questions/58950016/ ). Ce que j'ai l'intention de faire, c'est d'envoyer un cookie, de le lire dans l'application à l'aide de la fonction document.cookies . Je suppose que je ne peux pas le faire en utilisant localStorage ou sessionStorage car je devrai toujours envoyer la valeur que je veux stocker comme un cookie. N'est-ce pas ?

0voto

Jessica Rocha Points 19

Maintenant c'est : npm install ngx-cookie --save

Doc : https://github.com/salemdar/ngx-cookie

4 votes

Il est bon d'inclure des liens, mais veuillez partager les étapes pour rendre la réponse plus utile

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X