#javascript #angular
Вопрос:
Привет, я пытаюсь получить подстроку из строки на основе некоторых вычислений, но получаю эту ошибку в консоли браузера:
TypeError: Cannot read properties of undefined (reading 'substring')
at MessageVariantCardInputComponent.onInput
at MessageVariantCardInputComponent_input_HostBindingHandler
при использовании приведенного ниже примера кода для получения значения подстроки «значение»
Код:
@HostListener('input') onInput() {
this.triggerFound = false;
this.triggerName = '';
const native = this.element.nativeElement;
console.log("=== native dropdown", native)
const value = native.value;
const currentPos = native.selectionStart - 1;
for (const key of Object.keys(this.triggers)) {
const trigger = this.triggers[key];
const triggerLen = trigger.length;
const extractedString = value.substr(currentPos - triggerLen 1, triggerLen);
const found = extractedString === trigger;
const isFirstTrigger = key === 'firstElement';
if ((isFirstTrigger amp;amp; found amp;amp; currentPos === 0) || // allow first element trigger only when current pos is 0
(!isFirstTrigger amp;amp; found)
) {
this.triggerFound = true;
this.triggerName = trigger;
break;
}
}
}
Комментарии:
1. Значит
native
, не определено…?2.
const extractedString = value ? value.substr(currentPos - triggerLen 1, triggerLen) : null
Ответ №1:
Что вы получаете на своей консоли.войдите
console.log("=== native dropdown", native) ?