【问题标题】:Uncaught (in promise): TypeError: Cannot read property 'userSubject' of undefined TypeError: Cannot read property 'userSubject' of undefined未捕获(承诺中):TypeError:无法读取未定义的属性“userSubject”类型错误:无法读取未定义的属性“userSubject”
【发布时间】:2020-05-03 12:04:35
【问题描述】:

我想打电话

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

【问题讨论】:

    标签: javascript angular promise rxjs


    【解决方案1】:

    问题在于您使用的是普通函数而不是箭头函数。 一个普通的函数有自己的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;
      });
    }
    

    【讨论】:

    • 非常感谢撒旦兄弟
    猜你喜欢
    • 2020-03-10
    • 2019-05-16
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多