Ich habe ein Array wie dieses:
[{name:"test", time:"Date 2017-02-03T08:38:04.449Z"}]
Ich habe es in localstorage
gespeichert und als ich Daten von localstorage
abrief, bekam ich den Wert:
[object, object]
Wie kann ich dieses Problem lösen?
config.ts
import { Injectable } from "@angular/core";
@Injectable()
export class TokenManager {
public tokenKey: string = 'app_token';
constructor() { }
store(content) {
var contentData;
console.log("inside localstorsge store:", content);
contentData = content.map(
(data) => data.name
)
console.log("contentData:", contentData)
localStorage.setItem(this.tokenKey, content);
}
retrieve() {
console.log("inside localstorage");
let storedToken: any = localStorage.getItem(this.tokenKey);
console.log("storedToken:", storedToken);//====> here this console is[object object]
if (!storedToken) throw 'no token found';
return storedToken;
}
}
lokaler Speicher, der nur für String-Schlüssel/Wert-Paare geeignet ist, die Sie wie unten beschrieben verwenden können, indem Sie JSON.stringify
und den Wert JSON.parse
verwenden
var testObject ={name:"test", time:"Date 2017-02-03T08:38:04.449Z"};
Legen Sie das Objekt ab:
localStorage.setItem('testObject', JSON.stringify(testObject));
Rufen Sie das Objekt aus dem Speicher ab:
var retrievedObject = localStorage.getItem('testObject');
console.log('retrievedObject: ', JSON.parse(retrievedObject));
es ist ein wenig spät für die Beantwortung, aber ich möchte antworten, bis zukünftige Betrachter es verwenden können, Javascript Objekte als Referenz verwenden, dann, wenn wir ein Objekt in localStorage speichern, speichern wir in Wirklichkeit die Adresse des Objekts, nicht den Inhalt des Objekts! Dann, wenn wir Objektinhalte speichern wollen (absolut wollen wir), sollten wir wie folgt vorgehen:
so speichern:
localStorage.setItem('my_item', JSON.stringify(my_object));
und so verwenden:
var my_object = JSON.parse(localStorage.getItem('my_item'));
hoffe hilfreich zu sein :)
Mit localDataStorage können Sie Objekte im lokalen Speicher ablegen. Hier können Sie die folgenden "Typen" transparent setzen/erhalten: Array, Boolean, Date, Float, Integer, Null, Object oder String.
[DISCLAIMER] Ich bin der Autor des Dienstprogramms [/ DISCLAIMER]
Beispiele:
localDataStorage.set( 'key1', 'Belgian' )
localDataStorage.set( 'key2', 1200.0047 )
localDataStorage.set( 'key3', true )
localDataStorage.set( 'key4', { 'RSK' : [1,'3',5,'7',9] } )
localDataStorage.set( 'key5', null )
localDataStorage.get( 'key1' ) --> 'Belgian'
localDataStorage.get( 'key2' ) --> 1200.0047
localDataStorage.get( 'key3' ) --> true
localDataStorage.get( 'key4' ) --> Object {RSK: Array(5)}
localDataStorage.get( 'key5' ) --> null
Wie Sie sehen, werden die Grundwerte respektiert. In Ihrem Fall würden wir das tun:
>localDataStorage.set( 'testObject', { name : 'test', time : new Date( '2017-02-03T08:38:04.449Z' ) } )
Beachten Sie, dass Sie das Objekt einfach ausdrücken können. (Alle Zeichenfolgen werden für Sie im Hintergrund ausgeführt.) Wenn wir den Schlüssel zurückerhalten, erhalten wir:
>localDataStorage.get( 'testObject' ) -->
>Object {name: "test", time: "2017-02-03T08:38:04.449Z"}