angular - 角度:动态事件
问题描述
想要将点击事件附加到动态创建的 html 元素。click 事件应该能够触发组件中的另一个方法。
我已经阅读了其他建议使用 ElementRef 附加事件的 SO 答案。但是,它不适用于我的情况。
我正在使用 mapQuest API 来渲染地图。该地图将绘制地理编码并添加滚动内容。要添加翻转内容,我使用 mapQuest 的 API 方法,例如 info.setInfoContentHTML('click me');
仅供参考:https ://developer.mapquest.com/documentation/javascript-api/pois-infowindows/
该链接将在弹出窗口内,当用户将鼠标悬停在图标上时,它将由插件动态添加到 dom 中。如何在仅当用户悬停时显示的链接上添加事件侦听器并且插件没有提供回调事件,该事件可以在显示悬停弹出窗口后触发。
解决方案
Angular 在组件编译时处理模板。以后添加的任何 HTML 都不会再次编译,并且绑定将被忽略。
您可以使用以下内容:
constructor(private elRef:ElementRef) {}
ngAfterViewInit() {
// assume dynamic HTML was added before
this.elRef.nativeElement.querySelector('button').addEventListener('click',
this.onClick.bind(this));
}
你的用例:
public createElement(){
const ele = '<button>click me</button>';
this.elRef.nativeElement.querySelector('button').addEventListener('click',
this.methodName.bind(this));
info.setInfoContentHTML(ele);
}
public methodName(){
console.log('event called');
}
推荐阅读
- javascript - 我不知道如何将数组变量从 jquery 传递到其他 php 页面
- ionic-framework - 方向更改后的 Ionic 4 页面尺寸
- python - 从 Python 以 json 格式保存数据时,日期格式会自动更改
- spring - 在春季批处理中结合 CompositeItemProcessor 和 CompositeItemWriter
- python-3.x - Python:子进程等待在 Apache 中不起作用
- loops - 如何在 R 中创建循环,按年度间隔自动更改我的数据集的日期并将它们全部组合在一个数据集中?
- scala - 解释 flatMap 关联性
- c# - 通过 C# 中的代码在树视图中向上或向下移动
- sql-server - 在 datagridview 上加载数据的更快方法?
- mysql - 具有来自不同表的字段的人员列表