Biscuits angulars

J’ai cherché tout autour des cookies angulars mais je n’ai pas été en mesure de trouver comment implémenter la gestion des cookies dans Angular. Existe-t-il un moyen de gérer les cookies (comme $ cookie dans AngularJS)?

J’ai fini de créer mes propres fonctions:

@Component({ selector: 'cookie-consent', template: cookieconsent_html, styles: [cookieconsent_css] }) export class CookieConsent { private isConsented: boolean = false; constructor() { this.isConsented = this.getCookie(COOKIE_CONSENT) === '1'; } private getCookie(name: ssortingng) { let ca: Array = document.cookie.split(';'); let caLen: number = ca.length; let cookieName = `${name}=`; let c: ssortingng; for (let i: number = 0; i < caLen; i += 1) { c = ca[i].replace(/^\s+/g, ''); if (c.indexOf(cookieName) == 0) { return c.substring(cookieName.length, c.length); } } return ''; } private deleteCookie(name) { this.setCookie(name, '', -1); } private setCookie(name: string, value: string, expireDays: number, path: string = '') { let d:Date = new Date(); d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000); let expires:string = `expires=${d.toUTCString()}`; let cpath:string = path ? `; path=${path}` : ''; document.cookie = `${name}=${value}; ${expires}${cpath}`; } private consent(isConsent: boolean, e: any) { if (!isConsent) { return this.isConsented; } else if (isConsent) { this.setCookie(COOKIE_CONSENT, '1', COOKIE_CONSENT_EXPIRE_DAYS); this.isConsented = true; e.preventDefault(); } } } 

Voici angular2-cookie qui est l’implémentation exacte du service de $cookies Angular 1 $cookies (plus une méthode removeAll() ). Il utilise les mêmes méthodes, seulement implémenté en typographie avec la logique angular 2.

Vous pouvez l’injecter en tant que service dans le tableau des providers composants:

 import {CookieService} from 'angular2-cookie/core'; @Component({ selector: 'my-very-cool-app', template: '

My Angular2 App with Cookies

', providers: [CookieService] })

Après cela, définissez-le comme d’habitude et commencez à utiliser:

 export class AppComponent { constructor(private _cookieService:CookieService){} getCookie(key: ssortingng){ return this._cookieService.get(key); } } 

Vous pouvez l’obtenir via npm:

 npm install angular2-cookie --save 

EDIT: le cookie angular2 est maintenant obsolète. Veuillez utiliser ngx-cookie à la place.

Ouais, voici un ng2-cookies

Usage:

 import { Cookie } from 'ng2-cookies/ng2-cookies'; Cookie.setCookie('cookieName', 'cookieValue'); Cookie.setCookie('cookieName', 'cookieValue', 10 /*days from now*/); Cookie.setCookie('cookieName', 'cookieValue', 10, '/myapp/', 'mydomain.com'); let myCookie = Cookie.getCookie('cookieName'); Cookie.deleteCookie('cookieName'); 

Je fais de Miquels Version Injectable comme service:

 import { Injectable } from '@angular/core'; @Injectable() export class CookiesService { isConsented = false; constructor() {} /** * delete cookie * @param name */ public deleteCookie(name) { this.setCookie(name, '', -1); } /** * get cookie * @param {ssortingng} name * @returns {ssortingng} */ public getCookie(name: ssortingng) { const ca: Array = document.cookie.split(';'); const caLen: number = ca.length; const cookieName = `${name}=`; let c: ssortingng; for (let i = 0; i < caLen; i += 1) { c = ca[i].replace(/^\s+/g, ''); if (c.indexOf(cookieName) === 0) { return c.substring(cookieName.length, c.length); } } return ''; } /** * set cookie * @param {string} name * @param {string} value * @param {number} expireDays * @param {string} path */ public setCookie(name: string, value: string, expireDays: number, path: string = '') { const d: Date = new Date(); d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000); const expires = `expires=${d.toUTCString()}`; const cpath = path ? `; path=${path}` : ''; document.cookie = `${name}=${value}; ${expires}${cpath}`; } /** * consent * @param {boolean} isConsent * @param e * @param {string} COOKIE * @param {string} EXPIRE_DAYS * @returns {boolean} */ public consent(isConsent: boolean, e: any, COOKIE: string, EXPIRE_DAYS: number) { if (!isConsent) { return this.isConsented; } else if (isConsent) { this.setCookie(COOKIE, '1', EXPIRE_DAYS); this.isConsented = true; e.preventDefault(); } } } 

Il est également utile de stocker des données dans sessionStorage

 // Save data to sessionStorage sessionStorage.setItem('key', 'value'); // Get saved data from sessionStorage var data = sessionStorage.getItem('key'); // Remove saved data from sessionStorage sessionStorage.removeItem('key'); // Remove all saved data from sessionStorage sessionStorage.clear(); 

pour plus de détails https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

Pour lire un cookie, j’ai apporté de petites modifications à la version de Miquel qui ne fonctionne pas pour moi:

 getCookie(name: ssortingng) { let ca: Array = document.cookie.split(';'); let cookieName = name + "="; let c: ssortingng; for (let i: number = 0; i < ca.length; i += 1) { if (ca[i].indexOf(name, 0) > -1) { c = ca[i].subssortingng(cookieName.length +1, ca[i].length); console.log("valore cookie: " + c); return c; } } return "";