簡體   English   中英

未捕獲(承諾中):TypeError:無法讀取未定義的屬性“userSubject”類型錯誤:無法讀取未定義的屬性“userSubject”

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

我想打電話

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

問題是您使用普通的 function 而不是箭頭 function。 一個正常的 function 有自己的this指針。

只需使用箭頭 function 代替。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM