मैं कोणीय कुकीज़ के लिए चारों ओर देख रहा हूँ, लेकिन मुझे पता नहीं चल पाया है कि कोणीय में कुकीज़ प्रबंधन कैसे लागू किया जाए। क्या कुकीज़ को प्रबंधित करने का कोई तरीका है (जैसे कि AngularJS में $ कुकी )?
मैं कोणीय कुकीज़ के लिए चारों ओर देख रहा हूँ, लेकिन मुझे पता नहीं चल पाया है कि कोणीय में कुकीज़ प्रबंधन कैसे लागू किया जाए। क्या कुकीज़ को प्रबंधित करने का कोई तरीका है (जैसे कि AngularJS में $ कुकी )?
जवाबों:
मैंने अपने स्वयं के कार्यों का निर्माण किया:
@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: string) {
let ca: Array<string> = document.cookie.split(';');
let caLen: number = ca.length;
let cookieName = `${name}=`;
let c: string;
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();
}
}
}
अद्यतन: कोणीय 2-कुकी अब पदावनत हो गई है। कृपया मेरे बजाय नेक्सक्स-कुकी का उपयोग करें।
पुराना उत्तर:
यहाँ कोणीय 2 -कुकी है जो कि मेरे द्वारा बनाई गई कोणीय 1 $cookiesसेवा (एक removeAll()विधि) का सटीक कार्यान्वयन है । यह उसी विधियों का उपयोग कर रहा है, जो केवल कोणीय 2 तर्क के साथ टाइपस्क्रिप्ट में लागू किया गया है।
आप इसे घटक providersसरणी में एक सेवा के रूप में इंजेक्ट कर सकते हैं :
import {CookieService} from 'angular2-cookie/core';
@Component({
selector: 'my-very-cool-app',
template: '<h1>My Angular2 App with Cookies</h1>',
providers: [CookieService]
})
उसके बाद, इसे हमेशा की तरह कसूर में परिभाषित करें और उपयोग करना शुरू करें:
export class AppComponent {
constructor(private _cookieService:CookieService){}
getCookie(key: string){
return this._cookieService.get(key);
}
}
आप इसे npm के माध्यम से प्राप्त कर सकते हैं:
npm install angular2-cookie --save
हाँ, यहाँ एक एनजी 2-कुकीज़ है
उपयोग:
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');
NGX कुकी सेवा का उपयोग करें
इस पैकेज को इनस्टॉल करें: npm install ngx-cookie-service --save
प्रदाता के रूप में अपने app.module.ts में कुकी सेवा जोड़ें:
import { CookieService } from 'ngx-cookie-service';
@NgModule({
declarations: [ AppComponent ],
imports: [ BrowserModule, ... ],
providers: [ CookieService ],
bootstrap: [ AppComponent ]
})
फिर अपने कंपोनेंट में कॉल करें:
import { CookieService } from 'ngx-cookie-service';
constructor( private cookieService: CookieService ) { }
ngOnInit(): void {
this.cookieService.set( 'name', 'Test Cookie' ); // To Set Cookie
this.cookieValue = this.cookieService.get('name'); // To Get Cookie
}
बस!
10.1.1त्रुटि पैदा करता है Uncaught TypeError: Object(...) is not a function। 2.1.0कोड काम करने के लिए मैं संस्करण का उपयोग करता हूं । चेक github.com/stevermeister/ngx-cookie-service/issues/103
मैं Miquels संस्करण को सेवा के रूप में इंजेक्ट करता हूं:
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 {string} name
* @returns {string}
*/
public getCookie(name: string) {
const ca: Array<string> = decodeURIComponent(document.cookie).split(';');
const caLen: number = ca.length;
const cookieName = `${name}=`;
let c: string;
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}; SameSite=Lax`;
}
/**
* 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();
}
}
}
डाटा को स्टोर करना भी फायदेमंद है 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();
विवरण के लिए https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionperitory
एक कुकी पढ़ने के लिए, मैंने मिकेल संस्करण के बहुत कम संशोधन किए हैं जो मेरे लिए काम नहीं करता है:
getCookie(name: string) {
let ca: Array<string> = document.cookie.split(';');
let cookieName = name + "=";
let c: string;
for (let i: number = 0; i < ca.length; i += 1) {
if (ca[i].indexOf(name, 0) > -1) {
c = ca[i].substring(cookieName.length +1, ca[i].length);
console.log("valore cookie: " + c);
return c;
}
}
return "";