如何从本地存储对象访问特定属性? (角2 /角2本地存储)

时间:2017-06-21 19:59:49

标签: javascript angular

所以我使用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;

我做错了什么,如何访问数据?

3 个答案:

答案 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文档。

相关问题