【问题标题】:How to solve ERROR TypeError: this is undefined [Angular]如何解决错误类型错误:这是未定义的 [Angular]
【发布时间】:2020-12-11 16:14:36
【问题描述】:

我正在使用 Angular 9 来解决这个问题。 已经有一个问题(7年前问过):

TypeError: this is undefined

但这不是很有帮助。我检查了其他类似的问题:

Angular2 component's “this” is undefined when executing callback function

我想在输入字段上的每次击键时调用一个方法。

HTML

<input ... type="text" (input)="crossCheckUsername()" placeholder="Enter username">

打字稿

constructor(..., private _userService: UserService) { 
   // nothing here 
}

ngOnInit() {
  // nothing here
}

// users is defined properly; it is hard coded in the starting only

isUserExists(): boolean {
  let userExists = false;
  this.users.forEach(function (user) {
    if(*some logic*) {
        userExists=true;
    }
    else {
      userExists=false;
    }
  })
  return userExists;
}

crossCheckUsername() {  // this method will be called on every key stroke
  if(this.isUserExists()) {
    console.log("Try a different username");
  }
  else {
    //do nothing; keep typing
  }
}

但是我每次击键都会得到这个:

请纠正我的错误。

【问题讨论】:

  • 请检查您的用户对象,可能是属性不存在或属性未实例化您在用户循环中访问,否则函数看起来正常。
  • @user_mat, ya ya users 已定义。事实上,它是硬编码的。相信我:-)我也刚刚编辑了这个问题。请再检查一次。
  • 我是说,你试图访问的属性,例如user.obj.Name,然后检查obj是否被实例化。
  • @user_mat,是的,它是 intaintiated。我也检查了控制台。价值观来了。我们可以打个Skype电话吗?我想给你看代码。
  • 尽量避免将单词或短语放在标题中的括号中,就像问题已关闭或删除之类的一样,操作将在标题中的括号内。

标签: javascript angular


【解决方案1】:

工作解决方案:

HTML:

<input formControlName="username" type="email" class="form-control" id="usernameInput" (input)="crossCheckUsername($event.target.value)" placeholder="Enter username">

Component.ts:

crossCheckUsername(username: any) {

    for (let i = 0; i < this.users.length; i++) {
      if (this.users[i].email == username) {
        console.log("already exists");
      }
      else {
        console.log("ok keep typing");
      }
    }
    
  }

【讨论】:

  • 没有兄弟。它不工作。 :-( 没有错误,但现在每次都返回true
  • 那我需要检查你的代码,为什么 userExists 每次都返回 True ,不知道实际工作很难知道背后的原因..
  • 只是为了检查,您可以编辑如下并确认falseif('a'=='b') { userExists=true; } else { userExists=false; }
  • 我们在同一个时区兄弟。请我们把这个放在stackoverflow之外。像Skype或whatsapp电话。因为我被这个错误阻止了。
  • 是的,对我来说没问题 :)
猜你喜欢
  • 2018-02-05
  • 2013-06-19
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
相关资源
最近更新 更多