This question already has answers here:
How to access the correct `this` inside a callback?

(12个答案)


在11个月前关闭。




我有一个LoginData对象数组,其中一个属性是email。以下函数采用字符串参数,并应检查是否已经存在具有匹配电子邮件地址的LoginData对象。这是代码:
import { Injectable } from '@angular/core';
import { LOGINDATA } from '../mock-users';

@Injectable({
  providedIn: 'root'
})

export class CheckLoginDataService {
  emailString: string = "";
  loginData = LOGINDATA;


  checkLoginData(str: string){
    let emailExists: boolean = false;

    this.loginData.forEach( function(LoginData){
      this.emailString = LoginData.email;
      console.log(this.emailString);

      if (str === this.emailString){
        emailExists = true;
      }
    })

    return emailExists;
  }
}

运行代码时出现错误:



我查看了讨论此问题的其他stackoverflow线程,他们建议初始化"emailString"(在我的情况下)。我想我已经在一开始就这样做了-我做错了什么?

最佳答案

更改
this.loginData.forEach( function(LoginData){

this.loginData.forEach((LoginData) => {
在类中使用箭头函数会将函数中的this绑定(bind)到类实例本身。

09-17 22:44