详解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 相关文章推荐
跟随鼠标旋转的文字
Nov 30 Javascript
jQuery 动态酷效果实现总结
Dec 27 Javascript
禁止你的左键复制实用技巧
Jan 04 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
js冒泡法和数组转换成字符串示例代码
Aug 14 Javascript
ajax请求get与post的区别总结
Nov 04 Javascript
js关于精确计算和数值格式化以及直接引js文件
Jan 28 Javascript
bootstrap学习笔记之初识bootstrap
Jun 21 Javascript
AngularJS 教程及实例代码
Oct 23 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
Nov 21 Javascript
非常漂亮的js烟花效果
Mar 10 Javascript
vue-simple-uploader上传成功之后的response获取代码
Sep 07 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
967 个函式
2006/10/09 PHP
php tp验证表单与自动填充函数代码
2012/02/22 PHP
php对大文件进行读取操作的实现代码
2013/01/23 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
javascript options属性集合操作代码
2009/12/28 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
大学生秋游活动方案
2014/02/17 职场文书
项目施工员岗位职责
2014/03/09 职场文书
2014年女职工工作总结
2014/11/27 职场文书
债务纠纷起诉书
2015/05/20 职场文书
出生证明范本
2015/06/15 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers