所以我使用angular-2-local-storage将对象存储到本地存储中:
this.localStorage.set('myObject', {'prop1': "string", 'prop2': "string"});
然后我试图获得该对象的特定属性:
this.localStorage.get('myObject').prop1;
但这样做会给我一个错误Property 'prop1' does not exist on type '{}'
我还尝试将对象存储在局部变量中,然后尝试访问该属性,但它给了我同样的错误。
var myObject = this.localStorage.get('myObject');
var myProperty = myObject.prop1;
我做错了什么,如何访问数据?
答案 0 :(得分:2)
我在Angular2中使用localStorage.setItem / localStorage.getItem,所以它可能不是同一个行为。但是你尝试过字符串化和解析你的对象吗?
就我而言:
localStorage.setItem('myObject', JSON.stringify({'prop1': "string", 'prop2': "string"}));
let temp = JSON.parse(localStorage.getItem('myObject'));
temp.prop1; // gives "string"
在您的情况下,例如:
localStorage.set('myObject', JSON.stringify({'prop1': "string", 'prop2': "string"}));
let temp = JSON.parse(localStorage.get('myObject'));
temp.prop1;
希望它可以提供帮助!
答案 1 :(得分:1)
您必须将对象保存为字符串
localStorage.setItem('myObjectName', JSON.stringify(this.myObject));
然后获取字符串并将其转换为对象
this.myObject = JSON.parse(localStorage.getItem('myObjectName'));
答案 2 :(得分:0)
您能否提供有关如何配置angular2本地存储的更多详细信息。我检查了源代码,并在分别获取或设置之前进行了解析和字符串化。我没有测试过,但你应该能够做到以下几点:
import { LocalStorageModule } from 'angular-2-local-storage';
@NgModule({
imports: [
LocalStorageModule.withConfig({
prefix: 'my-app',
storageType: 'localStorage'
})
],
declarations: [
..
],
providers: [
..
],
bootstrap: [AppComponent]
})
export class AppModule {}
然后在您的组件中,您可以按以下方式注入此服务
constructor (
private localStorageService: LocalStorageService
) {
}
ngOnInit() {
this.localStorageService.set(key, value);
console.log(this.localStorageService.get(key));
}
你不必解析或串化任何东西。希望这会有所帮助。 再次:我还没有测试过这个代码完全基于angular-2-local-storage文档。