All Projects → PillowPillow → Ng2 Webstorage

PillowPillow / Ng2 Webstorage

Licence: mit
Localstorage and sessionstorage manager - Angular service

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Ng2 Webstorage

Ngx Store
Angular decorators to automagically keep variables in HTML5 LocalStorage, SessionStorage, cookies; injectable services for managing and listening to data changes and a bit more.
Stars: ✭ 152 (-61.52%)
Mutual labels:  decorators, localstorage, sessionstorage
ngx-localstorage
An Angular wrapper for localstorage/sessionstorage access.
Stars: ✭ 27 (-93.16%)
Mutual labels:  localstorage, sessionstorage
browserStorage
浏览器本地存储封装
Stars: ✭ 30 (-92.41%)
Mutual labels:  localstorage, sessionstorage
elm-storage
Unified interface for accessing and modifying LocalStorage, SessionStorage and Cookies
Stars: ✭ 13 (-96.71%)
Mutual labels:  localstorage, sessionstorage
Angular Locker
🗄️ A simple & configurable abstraction for local/session storage in angular js projects
Stars: ✭ 318 (-19.49%)
Mutual labels:  localstorage, sessionstorage
vue-storage-watcher
a reactive storage plugin for vue 👀🔭
Stars: ✭ 60 (-84.81%)
Mutual labels:  localstorage, sessionstorage
h5webstorage
Web Storage for Angular 2
Stars: ✭ 38 (-90.38%)
Mutual labels:  localstorage, sessionstorage
Jest Localstorage Mock
A module to mock window.localStorage and window.sessionStorage in Jest
Stars: ✭ 247 (-37.47%)
Mutual labels:  localstorage, sessionstorage
client-persist
Offline storage for your web client. Supports IndexedDB, WebSQL, localStorage and sessionStorage with an easy to crawl with API.
Stars: ✭ 14 (-96.46%)
Mutual labels:  localstorage, sessionstorage
localstorage-manager
LocalStorage Manager is a Chrome extension to add, edit, remove, export and import local storage and session storage data
Stars: ✭ 37 (-90.63%)
Mutual labels:  localstorage, sessionstorage
persistence
💾 Persistence provides a pretty easy API to handle Storage's implementations.
Stars: ✭ 18 (-95.44%)
Mutual labels:  localstorage, sessionstorage
cache-bucket
Light Cache for nodeJs and browserJs with TTL.
Stars: ✭ 14 (-96.46%)
Mutual labels:  localstorage, sessionstorage
mst-persist
Persist and hydrate MobX-state-tree stores (in < 100 LoC)
Stars: ✭ 75 (-81.01%)
Mutual labels:  localstorage, sessionstorage
local-storage-fallback
Check and use appropriate storage adapter for browser (localStorage, sessionStorage, cookies, memory)
Stars: ✭ 103 (-73.92%)
Mutual labels:  localstorage, sessionstorage
Immortaldb
🔩 A relentless key-value store for the browser.
Stars: ✭ 2,962 (+649.87%)
Mutual labels:  localstorage, sessionstorage
ng2-storage
A local and session storage wrapper for angular 2.
Stars: ✭ 14 (-96.46%)
Mutual labels:  localstorage, sessionstorage
Brownies
🍫 Tastier cookies, local, session, and db storage in a tiny package. Includes subscribe() events for changes.
Stars: ✭ 2,386 (+504.05%)
Mutual labels:  localstorage, sessionstorage
Awesome Web Storage
😎 Everything you need to know about Client-side Storage.
Stars: ✭ 227 (-42.53%)
Mutual labels:  localstorage, sessionstorage
stoor
Storage wrapper with support for namespacing, timeouts and multi get/set and remove.
Stars: ✭ 26 (-93.42%)
Mutual labels:  localstorage, sessionstorage
vue-web-storage
Vue.js plugin for local storage and session storage (1.8 kb min+gz) 💾
Stars: ✭ 85 (-78.48%)
Mutual labels:  localstorage, sessionstorage

ngx-webstorage

Local and session storage - Angular service

This library provides an easy to use service to manage the web storages (local and session) from your Angular application. It provides also two decorators to synchronize the component attributes and the web storages.

CircleCI

Index:


Migrate from v2.x to the v3

  1. Update your project to Angular 7+
  2. Rename the module usages by NgxWebstorageModule.forRoot() (before: Ng2Webstorage)

The forRoot is now mandatory in the root module even if you don't need to configure the library


Getting Started

  1. Download the library using npm npm install --save ngx-webstorage

  2. Declare the library in your main module

    import {NgModule} from '@angular/core';
    import {BrowserModule} from '@angular/platform-browser';
    import {NgxWebstorageModule} from 'ngx-webstorage';
    
    @NgModule({
    	declarations: [...],
    	imports: [
    		BrowserModule,
    		NgxWebstorageModule.forRoot(),
    		//NgxWebstorageModule.forRoot({ prefix: 'custom', separator: '.', caseSensitive:true }) 
    		// The forRoot method allows to configure the prefix, the separator and the caseSensitive option used by the library
    		// Default values:
    		// prefix: "ngx-webstorage"
    		// separator: "|"
    		// caseSensitive: false
    	],
    	bootstrap: [...]
    })
    export class AppModule {
    }
    
    
  3. Inject the services you want in your components and/or use the available decorators

    import {Component} from '@angular/core';
    import {LocalStorageService, SessionStorageService} from 'ngx-webstorage';
    
    @Component({
    	selector: 'foo',
    	template: `foobar`
    })
    export class FooComponent {
    
    	constructor(private localSt:LocalStorageService) {}
    
    	ngOnInit() {
    		this.localSt.observe('key')
    			.subscribe((value) => console.log('new value', value));
    	}
    
    }
    
    import {Component} from '@angular/core';
    import {LocalStorage, SessionStorage} from 'ngx-webstorage';
    
    @Component({
    	selector: 'foo',
    	template: `{{boundValue}}`,
    })
    export class FooComponent {
    
    	@LocalStorage()
    	public boundValue;
    
    }
    

Services


LocalStorageService

Store( key:string, value:any ):void

create or update an item in the local storage

Params:
  • key: String. localStorage key.
  • value: Serializable. value to store.
Usage:
import {Component} from '@angular/core';
import {LocalStorageService} from 'ngx-webstorage';

@Component({
	selector: 'foo',
	template: `
		<section><input type="text" [(ngModel)]="attribute"/></section>
		<section><button (click)="saveValue()">Save</button></section>
	`,
})
export class FooComponent {

    attribute;

    constructor(private storage:LocalStorageService) {}

    saveValue() {
      this.storage.store('boundValue', this.attribute);
    }

}

Retrieve( key:string ):any

retrieve a value from the local storage

Params:
  • key: String. localStorage key.
Result:
  • Any; value
Usage:
import {Component} from '@angular/core';
import {LocalStorageService} from 'ngx-webstorage';

@Component({
	selector: 'foo',
	template: `
		<section>{{attribute}}</section>
		<section><button (click)="retrieveValue()">Retrieve</button></section>
	`,
})
export class FooComponent {

    attribute;

    constructor(private storage:LocalStorageService) {}

    retrieveValue() {
      this.attribute = this.storage.retrieve('boundValue');
    }

}

Clear( key?:string ):void

Params:
  • key: (Optional) String. localStorage key.
Usage:
import {Component} from '@angular/core';
import {LocalStorageService, LocalStorage} from 'ngx-webstorage';

@Component({
	selector: 'foo',
	template: `
		<section>{{boundAttribute}}</section>
		<section><button (click)="clearItem()">Clear</button></section>
	`,
})
export class FooComponent {

    @LocalStorage('boundValue')
    boundAttribute;

    constructor(private storage:LocalStorageService) {}

    clearItem() {
      this.storage.clear('boundValue');
      //this.storage.clear(); //clear all the managed storage items
    }

}

Observe( key?:string ):EventEmitter

Params:
  • key: (Optional) localStorage key.
Result:
  • Observable; instance of EventEmitter
Usage:
import {Component} from '@angular/core';
import {LocalStorageService, LocalStorage} from 'ngx-webstorage';

@Component({
	selector: 'foo',
	template: `{{boundAttribute}}`,
})
export class FooComponent {

    @LocalStorage('boundValue')
    boundAttribute;

    constructor(private storage:LocalStorageService) {}

    ngOnInit() {
      this.storage.observe('boundValue')
        .subscribe((newValue) => {
          console.log(newValue);
        })
    }

}

SessionStorageService

The api is identical as the LocalStorageService's

Decorators


@LocalStorage

Synchronize the decorated attribute with a given value in the localStorage

Params:

  • storage key: (Optional) String. localStorage key, by default the decorator will take the attribute name.
  • default value: (Optional) Serializable. Default value

Usage:

import {Component} from '@angular/core';
import {LocalStorage, SessionStorage} from 'ngx-webstorage';

@Component({
	selector: 'foo',
	template: `{{boundAttribute}}`,
})
export class FooComponent {

	@LocalStorage()
	public boundAttribute;

}

@SessionStorage

Synchronize the decorated attribute with a given value in the sessionStorage

Params:

  • storage key: (Optional) String. SessionStorage key, by default the decorator will take the attribute name.
  • default value: (Optional) Serializable. Default value

Usage:

import {Component} from '@angular/core';
import {LocalStorage, SessionStorage} from 'ngx-webstorage';

@Component({
	selector: 'foo',
	template: `{{randomName}}`,
})
export class FooComponent {

	@SessionStorage('AnotherBoundAttribute')
	public randomName;

}

Known issues


  • Serialization doesn't work for objects:

NgxWebstorage's decorators are based upon accessors so the update trigger only on assignation. Consequence, if you change the value of a bound object's property the new model will not be store properly. The same thing will happen with a push into a bound array. To handle this cases you have to trigger manually the accessor.

import {LocalStorage} from 'ngx-webstorage';

class FooBar {

    @LocalStorage('prop')
    myArray;

    updateValue() {
        this.myArray.push('foobar');
        this.myArray = this.myArray; //does the trick
    }

}

Modify and build


npm install

Start the unit tests: npm run test

Start the unit tests: npm run test:watch

Start the dev server: npm run dev then go to http://localhost:8080/webpack-dev-server/index.html

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].