首页 > 解决方案 > 我正在尝试将用户的电子邮件存储到本地存储中,以便我可以从每个组件中获取它,但它不起作用

问题描述

在登录组件中,我试图将用户的电子邮件存储到本地存储中:

handleResponse(data){
    this.Token.handle(data.access_token);
    this.Auth.changeAuthStatus(true);
    this.service.senddata(this.user);
    localStorage.setItem('email',this.user.email);//this line is important
    this.router.navigateByUrl('/profile');
  }

在导航栏组件中,我试图获取电子邮件,但它让我出错"Cannot set property 'email' of undefined"

viewUser(){
    this.user.email=localStorage.getItem('email');
    this.userService.getProfile(this.user).subscribe(data=>this.loggedInUser=data);
  }

在服务器端一切正常,数据也存储在本地存储中。我已经尝试了一切来在全球范围内存储用户,但注意到确实有效。

编辑:我正在尝试使用从登录掩码中获取的用户的电子邮件,以使用另一个组件从服务器获取用户的所有信息。

标签: angularlaravel

解决方案


user在被调用的时候似乎是未定义的viewUser()

在您的导航栏组件上,您应该确保用户至少被初始化为一个空对象,或者一个具有一些默认属性/值的对象。如果有接口,你可以做这样的事情

user: User = {
  email: undefined
}

推荐阅读