如何将单击事件附加到Angular 7+;中的插件添加到DOM的元素;?
我正在使用VMWareClarity模块向页面添加数据网格。作为datagrid的一部分,有一个按钮可以在网格上打开一个弹出窗口,选择要隐藏/显示的列。选择列后,可通过单击关闭按钮关闭弹出窗口如何将单击事件附加到Angular 7+;中的插件添加到DOM的元素;?,angular,events,onclicklistener,dom-events,vmware-clarity,Angular,Events,Onclicklistener,Dom Events,Vmware Clarity,我正在使用VMWareClarity模块向页面添加数据网格。作为datagrid的一部分,有一个按钮可以在网格上打开一个弹出窗口,选择要隐藏/显示的列。选择列后,可通过单击关闭按钮关闭弹出窗口 我需要在弹出窗口中的“关闭”按钮上附加一个操作,但我无法访问元素来单击它,因为只有单击“隐藏/显示列”按钮后,它才会在DOM中呈现。我已尝试在ngAfterViewInit、变更检测和@HostListener中添加elementRef.nativeElement.querySelector,但没有人能够
我需要在弹出窗口中的“关闭”按钮上附加一个操作,但我无法访问元素来单击它,因为只有单击“隐藏/显示列”按钮后,它才会在DOM中呈现。我已尝试在
ngAfterViewInit
、变更检测
和@HostListener
中添加elementRef.nativeElement.querySelector
,但没有人能够找到加载到DOM中的新弹出元素。是否检查了目标元素的父节点?通常会在Body标记的最高DOM级别上创建一个弹出窗口(取决于您的UI框架)。否则,您仍然可以实现一个Output()EventEmitter
,如下所示:
输出组件的示例代码:
@Output() change = new EventEmitter<number>();
@Output()change=neweventemitter();
在本例中,我能够在文档上使用HostListener,然后跟踪事件目标nodeName
是否是我要查找的元素(因为每个元素都有一个nodeName
):
元素确实会附加到
中。我只需要在这个弹出窗口的目标按钮。有问题的popup元素是由插件在ngAfterViewInit
之后添加到DOM中的,以前没有在组件中引用过,因此我还无法将事件附加到关闭按钮以发出输出。我相信这是一个功能请求,我们不会将此事件公开给您听。您需要附加什么事件以及为什么要附加到此特定按钮?您好@JeremyWilken,我们的应用程序正在为用户持久化打开/关闭的网格列,以便用户可以加载应用程序及其选定的隐藏/显示列。我假设事件是clr dg column toggle
popup close按钮事件。在这种情况下,将保存操作挂接到弹出窗口的关闭按钮是最有意义的,因为它是一个可操作的确认,确认弹出窗口更改已完成。
@HostListener('document:click', ['$event'])
onClick(event) {
if (event.target.nodeName === 'CLR-ICON') {
// Do something
}
}