Javascript TS2339:不动产';风格';不存在于类型';元素';?

Javascript TS2339:不动产';风格';不存在于类型';元素';?,javascript,angular,typescript,Javascript,Angular,Typescript,代码如下: ngOnInit() { const navSlide = () => { const burger = document.querySelector('.burger'); const nav = document.querySelector('.nav-links'); const navLinks = document.querySelectorAll('.nav-links li'); burger.addEventListener('click', (

代码如下:

ngOnInit() {
const navSlide = () => {
  const burger = document.querySelector('.burger');
  const nav = document.querySelector('.nav-links');
  const navLinks = document.querySelectorAll('.nav-links li');
  burger.addEventListener('click', () => {
    nav.classList.toggle('nav-active');
  });
  navLinks.forEach((link, index) => {
  link.style.animation = `navLinkFade 0.5s ease forwards ${index / 7 + 0.3}s`;
   });
};
navSlide();
}

编译时出现的错误:

Property 'style' does not exist on type 'Element'.ts(2339)

如何修复它?

querySelectorAll
返回一个
节点列表
已知包含
元素
s,但不具体是
HTMLElement
s。在您的例子中,您知道这些是
htmlElement
(特别是
htmlElement
s),因此您可以使用类型断言表示:

navLinks.forEach((link, index) => {
    (link as HTMLElement).style.animation = `navLinkFade 0.5s ease forwards ${index / 7 + 0.3}s`;
});

但是你看,我不做角度的,但听起来这里有一个更具体的角度解决方案。

你能提供一个可重复的例子吗?您还应该使用
ViewChild
获取对元素的引用,因为这是您获取对dom元素引用的方式。@MikeS.-如果你把
导航幻灯片的主体放在操场上:@MikeS.-不过,你评论中有棱角的部分可能是一个好答案的基础,伊姆霍。这能回答你的问题吗?是的,我的错。我没有完全阅读错误消息。这将起作用,除非您必须使用生命周期钩子
ngAfterViewInit
而不是
ngOnInit
,因为此时视图才初始化。太棒了!它起作用了。谢谢@T.J.克劳德