Фокусировка элемента списка узлов

#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();