如何解决错误类型错误:这是未定义的 [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 yausers
已定义。事实上,它是硬编码的。相信我:-)我也刚刚编辑了这个问题。请再检查一次。
我是说,你试图访问的属性,例如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 ,不知道实际工作很难知道背后的原因..
只是为了检查,您可以编辑如下并确认false:if('a'=='b') userExists=true; else userExists=false;
我们在同一个时区兄弟。请我们把这个放在***之外。像Skype或whatsapp电话。因为我被这个错误阻止了。
是的,对我来说没问题 :)以上是关于如何解决错误类型错误:这是未定义的 [Angular]的主要内容,如果未能解决你的问题,请参考以下文章
如何解决“未捕获的类型错误:无法读取未定义的属性'参数'”reactjs + django
如何解决“未捕获的类型错误:无法读取未定义的属性'get'”? (Vue.JS 2)