Uncaught (в обещании): TypeError: Невозможно прочитать свойство 'userSubject' из неопределенного TypeError: Невозможно прочитать свойство 'userSubject' из неопределенного - PullRequest
1 голос
/ 03 мая 2020

Я хочу позвонить

login(username, password) {    
  return Parse.User.logIn(username, password)
    .then(function (user) {
      // store user details and jwt token in local storage to keep user logged in between page refreshes
      localStorage.setItem('user', JSON.stringify(user));
      console.log(user);
      this.userSubject.next(user);
      return user;
    });
}

так же, как это

login(username, password) {
  return this.http.post<user>(`${environment.apiUrl}/users/authenticate`, { username, password })
    .pipe(map(user => {
      // store user details and jwt token in local storage to keep user logged in between page refreshes
      localStorage.setItem('user', JSON.stringify(user));
      console.log(user);
      this.userSubject.next(user);
      return user;
  }));
}

, но это приводит к ошибке

Uncaught (in promise): TypeError: Cannot read property 'userSubject' of undefined
TypeError: Cannot read property 'userSubject' of undefined

1 Ответ

0 голосов
/ 03 мая 2020

проблема в том, что вы используете обычную функцию вместо функции стрелки. нормальная функция имеет собственный указатель this.

, вместо этого просто используйте функцию стрелки.

login(username, password) {

return Parse.User.logIn(username, password)
  .then((user) => { // <-- here is the change
    localStorage.setItem('user', JSON.stringify(user));
    console.log(user);
    this.userSubject.next(user);
    return user;
  });
}
...