Я пытаюсь сохранить электронную почту пользователя в локальном хранилище, чтобы я мог получить его из каждого компонента, но он не работает - PullRequest
0 голосов
/ 20 июня 2019

В компоненте входа я пытаюсь сохранить электронную почту пользователя в локальном хранилище:

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');
  }

В компоненте navbar я пытаюсь получить электронное письмо, но мне выдается ошибка "Cannot set property 'email' of undefined"

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

На стороне сервера все работает нормально, и данные также хранятся в локальном хранилище. Я перепробовал все, чтобы сохранить пользователя в глобальном масштабе, но замечание действительно работает.

Изменить: Я пытаюсь использовать электронную почту пользователя, которую я получаю из маски входа в систему, чтобы получить всю информацию о пользователе с сервера, используя другой компонент.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Определить user сначала.

user:User = new User

, а затем

viewUser(){
  this.user.email=localStorage.getItem('email');
  this.userService.getProfile(this.user).subscribe(data=>this.loggedInUser=data);
}
0 голосов
/ 20 июня 2019

Кажется, что user не определено в тот самый момент, когда вызывается viewUser().

В вашем компоненте navbar вы должны убедиться, что пользователь хотя бы инициализирован как пустой объект или объектс некоторыми свойствами / значениями по умолчанию.Если есть интерфейс, вы можете сделать что-то вроде этого

user: User = {
  email: undefined
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...