我有以下角度成分
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-status',
templateUrl: './status.component.html',
styleUrls: ['./status.component.css']
})
export class StatusComponent implements OnInit {
constructor() { }
ngOnInit() {
const acc = document.getElementsByClassName('accordion');
let i;
for (i = 0; i < acc.length; i++) {
acc[i].onclick = function() {
this.classList.toggle('active');
this.nextElementSibling.classList.toggle('show');
};
}
}
}
我正在从编译器中检索以下错误
src / app / components / status / status.component.ts(16,16)中的错误:错误TS2339:类型“元素”上不存在属性“ onclick”。
尽管编译成功,并且一切正常。
我应该忽略该错误吗?
答案 0 :(得分:1)
您需要将其投射到HTMLElement
const acc: HTMLElement = document.getElementsByClassName('accordion') as HTMLElement;
答案 1 :(得分:0)
如上述用户所述,您必须将其强制转换为HTMLElement,但必须位于for循环内。我没有发表评论的声誉,这就是为什么我再次回答。
ngOnInit() {
const acc = document.getElementsByClassName('accordion');
let i;
for (i = 0; i < acc.length; i++) {
HTMLElement(acc[i]).onclick = function() {
this.classList.toggle('active');
this.nextElementSibling.classList.toggle('show');
};
}
}
或者如果您仍然使用“ document.getElementsByClassName”,我宁愿建议使用“ addEventListener”函数。
ngOnInit() {
const acc = document.getElementsByClassName('accordion');
let i;
for (i = 0; i < acc.length; i++) {
acc[i].addEventListener("click",function() {
this.classList.toggle('active');
this.nextElementSibling.classList.toggle('show');
});
}
}