angular2-localstorage-annotation

0.1.4 • Public • Published

Angular2 @LocalStorage

This little Angular2/typescript decorator makes it super easy to save and restore automatically a variable state in your directive (class property) using HTML5' LocalStorage.

Use

  1. Download the library using npm or github: npm install angular2-localstorage-annotation
  2. Register the LocalStorage in your boot.ts:
var appPromise = bootstrap(MyRootAppComponent);
 
// register LocalStorage, this registers our change-detection.
import {LocalStorageSubscriber} from 'angular2-localStorage/LocalStorageEmitter';
LocalStorageSubscriber(appPromise);
  1. Use the LocalStorage decorator
import {LocalStorage} from "angular2-localStorage/LocalStorage";
 
class MySuperComponent {
    @LocalStorage() public lastSearchQuery:Object = {};
    @LocalStorage('differentLocalStorageKey') public lastSearchQuery:Object = {};
}

Note: Define always a default value at the property you are using @LocalStorage. Note: The localStorage key is per default the property name. Define the first argument of @LocalStorage to set different one.

Examples

@Component({
    selector: 'app-login',
    template: `
<form>
    <div>
        <input type="text" [(ngModel)]="username" placeholder="Username" />
        <input type="password" [(ngModel)]="password" placeholder="Password" />
    </div>
    
    <input type="checkbox" [(ngModel)]="keepLoggedIn" /> Keep me logged in
 
    <button type="submit>Login</button
</form>
    `
})
class AppLoginComponent {
    //here happens the magic. `username` is always restored from the localStorage when you reload the site
    @LocalStorage() public username:string = '';
    
    public password:string;
    
    //here happens the magic. `keepLoggedIn` is always restored from the localStorage when you reload the site
    @LocalStorage() public keepLoggedIn:boolean = false;
}
@Component({
    selector: 'admin-menu',
    template: `
<div *ngFor="#menuItem of menuItems() | mapToIterable; #i = index">
    <h2 (click)="hiddenMenuItems[i] = !!!hiddenMenuItems[i]">
        {{i}}: {{category.label}}
    </h2>
    <div style="padding-left: 15px;" [hidden]="!hiddenMenuItems[i]">
        <a href>Some sub menu item 1</a>
        <a href>Some sub menu item 2</a>
        <a href>Some sub menu item 3</a>
    </div>
</div>
    `
})
class AdminMenuComponent {
    public menuItems = [{title: 'Menu1'}, {title: 'Menu2'}, {title: 'Menu3'}];
 
    //here happens the magic. `hiddenMenuItems` is always restored from the localStorage when you reload the site
    @LocalStorage() public hiddenMenuItems:Array<boolean> = [];
}

Readme

Keywords

Package Sidebar

Install

npm i angular2-localstorage-annotation

Weekly Downloads

5

Version

0.1.4

License

ISC

Last publish

Collaborators

  • andrei.tara