聚焦一个 NodeList 元素

Focus a NodeList element

NodeList 项没有 focus 方法。不过我看过几篇字面写成nodeList[index].focus()的文章,应该是不对吧?

我们如何聚焦 NodeList 中的元素?

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

NodeList 类型不够窄;您必须指定它是 HTMLElement 的节点列表。您可以使用 NodeListOf<HTMLElement> 类型执行此操作:

let nodeList: NodeListOf<HTMLElement> = el.nativeElement.querySelectorAll('a');
nodeList[0].focus();

请注意,您也可以让编译器推断 nodeList 的正确类型,而不必显式输入它:

let nodeList = el.nativeElement.querySelectorAll('a');
nodeList[0].focus();