Ionic Storage

more information https://github.com/ionic-team/ionic-storage

# using Angular
npm install @ionic/storage-angular
# otherwise
npm install @ionic/storage

Import the storage module into main.ts

!! This may be different when using ngModules !!

// src/main.ts
import { IonicStorageModule } from '@ionic/storage-angular';

bootstrapApplication(AppComponent, {
    providers: [
        ...
        importProvidersFrom( IonicStorageModule.forRoot()),
    ],
});

Create a storage service

From the command line run:

ionic g service services/storage

The add methods to the storage service

// src/services/storage.service.ts
import { Injectable } from '@angular/core';
import { Storage } from '@ionic/storage-angular';

@Injectable({
    providedIn: 'root'
})
export class StorageService {

    constructor(private storage: Storage) {
        this.init();
    }

    async init() {
        await this.storage.create();
    }

    public async set(key: string, value: any) {
        let result = await this.storage?.set(key, value);
    }

    public async get(key: string) {
        return await this.storage?.get(key);
    }

    public async remove(key: string) {
        let value = await this.storage?.remove(key);
    }

    public async clear(key: string) {
        let value = await this.storage?.clear();
    }

    public async keys(key: string) {
        return await this.storage?.keys();
    }

    // await storage.length()
    // storage.forEach((key, value, index) => { });
    // storage.setEncryptionKey('mykey');
}

Storage service usage examples

For all examples, make sure you import the StorageService and injected it into the component constructor.

import { StorageService } from './services/storage.service';

export class SomeComponent implements OnInit {
    constructor(private storageService: StorageService) { }
}

Setting initial values on application load

// src/app/app.component.ts
async ngOnInit() {
    const name = (await this.storageService.get('name')) || 'Paul';
    await this.storageService.set('name', name);
}