详解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 相关文章推荐
JavaScript中__proto__与prototype的关系深入理解
Dec 04 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
Mar 25 Javascript
JS弹出可拖拽可关闭的div层完整实例
Feb 13 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
jQuery实现下拉框功能实例代码
May 06 Javascript
AngularJS基础 ng-model-options 指令简单示例
Aug 02 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 Javascript
微信小程序App生命周期详解
Jan 31 Javascript
JS打印彩色菱形的实例代码
Aug 15 Javascript
小程序登录态管理的方法示例
Nov 13 Javascript
vuex实现的简单购物车功能示例
Feb 13 Javascript
nuxt 路由、过渡特效、中间件的实现代码
Nov 06 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
多文件上传的例子
2006/10/09 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
Python os模块学习笔记
2015/06/21 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
python numpy 按行归一化的实例
2019/01/21 Python
django中forms组件的使用与注意
2019/07/08 Python
python 深度学习中的4种激活函数
2020/09/18 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
学期自我鉴定范文
2013/10/01 职场文书
市场营销方案范文
2014/03/11 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
个人委托书如何写
2014/09/25 职场文书
优秀团员事迹材料
2014/12/25 职场文书
面试通知短信
2015/04/20 职场文书
教师节表彰会主持词
2015/07/06 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
详解Nginx 工作原理
2021/03/31 Servers
python Tkinter的简单入门教程
2021/04/11 Python
python实现A*寻路算法
2021/06/13 Python
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL