#javascript #angular #error-handling #undefined
#javascript #угловой #обработка ошибок #не определено
Вопрос:
У меня есть функция, которая получает ввод пользователя. Внутри этой функции находится функция обратного вызова, которая проверяет ввод пользователя. При вызове функции обратного вызова я получаю сообщение об ошибке, Ошибка ERROR: не удается прочитать свойство ‘input’ неопределенного.
HTML
<input id="answer" type="number" (input)= "getInput($event, checkAnswer)" >
JS
input = null;
answer = null;
getInput(event, chkAns){
this.input = Number(event.target.value);
chkAns();
console.log("Input :" " " this.input);
}
checkAnswer(){
if(this.input === this.answer){
this.multiply();
} else{
console.log(this.input " " "is incorrect" " " typeof
this.answer);
}
}
Комментарии:
1. Вероятно, потому
this
, что не определено в этом контексте.2. Можете ли вы вставить рабочий фрагмент в свой вопрос — в частности, чтобы показать, как вызывается GetInput и связь между chkAns и checkAnswer .
3. @AHaworth Ссылка: app-x.stackblitz.io
Ответ №1:
Вы можете сделать одну из трех вещей:
- Сделайте функцию, которую вы передаете (chkAns), атомарной — то есть, чтобы она не требовала определенного состояния (this.input, this.answer), и получите эти параметры при ее вызове (поэтому вместо
chkAns()
, вы будете делатьchkAns(this.input, this.answer)
- Не передавайте его из шаблона, а вызывайте
this.CheckAnswer()
внутриgetInput
- Передайте
this
contex в chkAns при его вызове:chkAns.call(this)
— Я думаю, что этот параметр является наименее «угловатым» вариантом
Вот рабочий стекблитц второго варианта