详解angular2如何手动点击特定元素上的点击事件


Posted in Javascript onOctober 16, 2018

我试图在元素上编程点击点击事件(或任何其他事件),换句话说,我想知道在angular2中由jQuery .trigger()方法提供的类似功能.

有没有内置的方法来做到这一点? …..如果不是,请建议我该怎么做

考虑以下代码片段

<form [ngFormModel]="imgUploadFrm"
     (ngSubmit)="onSubmit(imgUploadFrm)">
    <br>
    <div class="input-field">
      <input type="file" id="imgFile" (click)="onChange($event)" >
    </div>
    <button id="btnAdd" type="submit" (click)="showImageBrowseDlg()" )>Add Picture</button>
 </form>

这里当用户点击btnAdd它应该触发imgFile上的点击事件

Angular4

代替

this.renderer.invokeElementMethod(
    this.fileInput.nativeElement, 'dispatchEvent', [event]);

使用

this.fileInput.nativeElement.dispatchEvent(event);

因为invokeElementMethod不再是渲染器的一部分.

Angular2

使用 ViewChild 与模板变量来获取对文件输入的引用,然后使用 Renderer 调用dispatchEvent来触发事件:

import { Component, Renderer, ElementRef } from '@angular/core';
@Component({
 ...
 template: `
...
<input #fileInput type="file" id="imgFile" (click)="onChange($event)" >
...`
})
class MyComponent {
 @ViewChild('fileInput') fileInput:ElementRef;

 constructor(private renderer:Renderer) {}

 showImageBrowseDlg() {
  // from http://stackoverflow.com/a/32010791/217408
  let event = new MouseEvent('click', {bubbles: true});
  this.renderer.invokeElementMethod(
    this.fileInput.nativeElement, 'dispatchEvent', [event]);
 }
}

更新

由于Angular团队不再劝阻直接的DOM访问,所以也可以使用更简单的代码

this.fileInput.nativeElement.click()

参见 https://developer.mozilla.org/de/docs/Web/API/EventTarget/dispatchEvent

代码日志版权声明:

翻译自:http://stackoverflow.com/questions/36639486/angular2-manually-firing-click-event-on-particular-element

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
jquery获得下拉框值的代码
Aug 13 Javascript
关于IE BUG与字符串截取substr的解决办法
Apr 10 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
Jun 25 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
Apr 14 Javascript
JavaScript中string转换成number介绍
Dec 31 Javascript
Javascript动画效果(3)
Oct 11 Javascript
js实现文本上下来回滚动
Feb 03 Javascript
学习使用Bootstrap页面排版样式
May 11 Javascript
使用JS编写的随机抽取号码的小程序
Aug 11 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
vue.js实现h5机器人聊天(测试版)
Jul 16 Javascript
iView框架问题整理小结
Oct 16 #Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
Oct 16 #Javascript
js拖动滑块和点击水波纹效果实例代码
Oct 16 #Javascript
ajax与jsonp的区别及用法
Oct 16 #Javascript
JS调用安卓手机摄像头扫描二维码
Oct 16 #Javascript
QRCode.js二维码生成并能长按识别
Oct 16 #Javascript
移动端图片上传旋转、压缩问题的方法
Oct 16 #Javascript
You might like
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
python二叉树的实现实例
2013/11/21 Python
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
关于python的list相关知识(推荐)
2017/08/30 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
函数指针的定义是什么
2016/08/14 面试题
大学生简历中个人的自我评价
2013/10/06 职场文书
涉外文秘个人求职的自我评价
2013/10/07 职场文书
超市后勤自我鉴定
2014/01/17 职场文书
互联网创业计划书的书写步骤
2014/01/28 职场文书
政府四风问题整改措施
2014/10/04 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
践行三严三实心得体会
2014/10/13 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书