typescript - 清晰度“clr-icon”-@hostlistener 单击不起作用
问题描述
我添加了一个主机监听器来监听 onclick 事件。如果 event.target.nodename 是 CLR-ICON,它将调用事件发射器。
在测试它时,我尝试单击 clr-icon 并且它不会触发为 hostListner 定义的 onclick 函数。
// Original Code:
@Directive({
selector: '[deleteIcon]'
})
@HostListener('click', ['$event'])
onClick(event){
if (event?.target?.nodeName === 'CLR-ICON') {
console.log(event);
this.delete.next(true);
}
}
export class ControlDeleteDirective implements AfterViewInit, OnDestroy {
@Output()
delete: EventEmitter<boolean> = new EventEmitter<boolean>();
ngAfterViewInit () {
setTimeout(() => {
this.setupDeleteIcon();
}, 0);
}
private setupDeleteIcon() {
const deleteIcon = `
<clr-icon
shape="times-circle"
style="color: #0076CE; cursor: pointer"
class="is-solid"
(click)="onClick($event)">
</clr-icon>
`;
}
作为一种解决方法,我改为使用“document:click”或“body:click”,它确实调用了该函数但有问题 - 一旦页面加载,即使未显示向导并且用户也自动调用 click 函数还没有看到或点击 clr 图标。
// my attempt - looks like it automatically call the click function even though the user have not seen or click on the clr-icon yet.
@HostListener('document:click', ['$event'])
if (event?.target?.nodeName === 'CLR-ICON') {
this.delete.next(true);
}
有没有办法仅在单击 clr 图标时触发函数调用?
解决方案
推荐阅读
- sql - 从 SQL 中的列中删除重复值
- javascript - 如何使用 javascript 将 css-grid 元素放入网格容器中
- c# - 如何转换跨度
到 ASCII 字符串? - python - 如何有条件地从数据框中的两列计算的变量中选择行?
- asp.net-core - 在 .Net Core 中自定义 OAuth CallBackPath 控制器
- python-3.x - 有时会抛出错误的文件描述符错误,有时不会
- html - 如何使用 SourceSansPro 匹配设计跨浏览器
- reactjs - React useEffect() 仅在具有依赖关系的第一次渲染时运行
- multithreading - gsutil 没有 -m 多线程/并行默认行为
- kubernetes - 在 Google Kubernetes Engine 上部署生产就绪的 GitLab 时出现 HTTPError 400