angular - 我正在尝试将用户的电子邮件存储到本地存储中,以便我可以从每个组件中获取它,但它不起作用
问题描述
在登录组件中,我试图将用户的电子邮件存储到本地存储中:
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);
}
在服务器端一切正常,数据也存储在本地存储中。我已经尝试了一切来在全球范围内存储用户,但注意到确实有效。
编辑:我正在尝试使用从登录掩码中获取的用户的电子邮件,以使用另一个组件从服务器获取用户的所有信息。
解决方案
user
在被调用的时候似乎是未定义的viewUser()
。
在您的导航栏组件上,您应该确保用户至少被初始化为一个空对象,或者一个具有一些默认属性/值的对象。如果有接口,你可以做这样的事情
user: User = {
email: undefined
}
推荐阅读
- javascript - JS Checkout:如何处理批准期间关闭的父窗口?
- postgresql - 如何通过postgres查询获取一组分组数据
- python - 在numpy数组的每一行中查找整数首次出现的索引的最佳方法?
- google-apps-script - 如何使用 Google App Script 和 Cheerio 在同一字符串中映射不同的类?
- python - 向量:通过总距离找到 x 和 y 位移
- graph-theory - 在无向图中如何定义祖先和后代?
- python - 无法通过迭代表达式生成字典来访问字典值
- docker - 码头工人找不到模块'/var/www/server/build/app/Controllers/Http/UploadController'
- android - 在添加查询后从客户端应用程序调用 Android 11 远程绑定服务绑定失败
- r - 如何使用每行的不同字符位置对 R 中的列进行子串化