如何解决错误类型错误:这是未定义的 [Angular]

Posted

技术标签:

【中文标题】如何解决错误类型错误:这是未定义的 [Angular]【英文标题】:How to solve ERROR TypeError: this is undefined [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电话吗?我想给你看代码。 尽量避免将单词或短语放在标题中的括号中,就像问题已关闭或删除之类的一样,操作将在标题中的括号内。 【参考方案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; 我们在同一个时区兄弟。请我们把这个放在***之外。像Skype或whatsapp电话。因为我被这个错误阻止了。 是的,对我来说没问题 :)

以上是关于如何解决错误类型错误:这是未定义的 [Angular]的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的类型错误:无法读取未定义的属性“替换”

如何解决“未捕获的类型错误:无法读取未定义的属性'参数'”reactjs + django

如何解决“未捕获的类型错误:无法读取未定义的属性'get'”? (Vue.JS 2)

如何解决未捕获的类型错误:无法读取未定义的属性“调用”?

我该如何解决这个问题:未捕获的类型错误:无法读取 javascript 中未定义的属性“toString”

未捕获的类型错误:无法读取未定义的属性“顶部”