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.克劳德