#javascript #html #typescript #nodelist
Вопрос:
NodeList
у элементов нет focus
метода. Однако я видел несколько статей, написанных буквально nodeList[index].focus()
, которые, должно быть, неверны, верно?
Как мы фокусируем элемент из списка узлов?
let nodeList:NodeList = el.nativeElement.querySelectorAll('a');
...
nodeList[0].focus(); // Property 'focus' does not exist on type 'Node'
(nodeList[0] as HTMLElement).focus(); // doesn't work
Комментарии:
1.
let nodeList: NodeListOf<HTMLElement> = ...
Работает ли это? (примечание: вы просто не можете явно ввести список узлов, и он должен быть выведен правильно.)
Ответ №1:
NodeList
это недостаточно узкий тип; вы должны указать, что это список узлов из HTMLElement
s. Вы можете сделать это с NodeListOf<HTMLElement>
помощью типа:
let nodeList: NodeListOf<HTMLElement> = el.nativeElement.querySelectorAll('a');
nodeList[0].focus();
Обратите внимание, что в качестве альтернативы вы можете позволить компилятору определить правильный тип nodeList
и избежать необходимости явно вводить его:
let nodeList = el.nativeElement.querySelectorAll('a');
nodeList[0].focus();