У меня была такая же проблема.Итак, я создал сервис, который является оболочкой нативного localStorage.
После этого я внедряю свою оболочку в модуль моего веб-приложения и в модуль моего мобильного приложения.Но для модуля мобильного приложения я вместо своей оболочки добавляю nativescript-localstorage.
Как моя оболочка имеет те же функции, что и класс nativescript-localstorage, Angular видит только огонь, и я могу использовать свою оболочку для обработкис localStorage для мобильных устройств и в Интернете!
В действительности, когда он находится в веб-контексте, Angular использует «native» localStorage, а когда он находится в мобильном контексте, Angular использует nativescript-localstorage lib.
Ниже моего кода.
Моя служебная оболочка :
import { Injectable } from "@angular/core";
@Injectable()
export class CustomStorageService {
setItem(key, value){
localStorage.setItem(key, value);
}
getItem(key){
return localStorage.getItem(key);
}
removeItem(key){
localStorage.removeItem(key);
}
clear(){
localStorage.clear();
}
}
В app.module.ts :
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
import { CustomStorageService } from './commons/core/services/guard/custom-storage.service';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
AppRoutingModule,
HttpClientModule
],
providers: [
CustomStorageService
],
bootstrap: [AppComponent]
})
export class AppModule { }
My app.module.tns.ts :
import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
import { NativeScriptModule } from 'nativescript-angular/nativescript.module';
import { NativeScriptHttpClientModule } from 'nativescript-angular/http-client';
import * as mobileStorage from 'nativescript-localstorage';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent,
],
imports: [
NativeScriptModule,
AppRoutingModule,
NativeScriptHttpClientModule,
NativeScriptFormsModule
],
providers: [
{
provide: CustomStorageService,
useValue: mobileStorage
}
],
bootstrap: [AppComponent],
schemas: [NO_ERRORS_SCHEMA]
})
export class AppModule { }
Пример использования оболочки:
import { Injectable } from '@angular/core';
import { CustomStorageService } from './custom-storage.service';
@Injectable()
export class TokenService {
constructor(private storage: CustomStorageService){
}
getToken(): String {
return this.storage.getItem('token');
}
saveToken(token: String) {
this.storage.setItem('token',token);
}
destroyToken() {
this.storage.removeItem('token');
}
destroyAll(){
this.storage.removeItem('token');
this.storage.removeItem('user_id');
this.storage.removeItem('user_name');
this.storage.removeItem('full_name');
}
destroyUser() {
this.storage.removeItem( 'currentUser' );
}
cleanLocalStorage() {
this.storage.clear();
}
}
Надеюсь, это поможет.