详解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 Dialog(JS 模态窗口,可拖拽的DIV)
Feb 07 Javascript
jquery高级编程的最佳实践详解
Mar 23 Javascript
jQuery和AngularJS的区别浅析
Jan 29 Javascript
Javascript 实现简单计算器实例代码
Oct 23 Javascript
Vue.js使用v-show和v-if的注意事项
Dec 13 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
Dec 26 Javascript
vue中配置mint-ui报css错误问题的解决方法
Oct 11 Javascript
Vue中使用的EventBus有生命周期
Jul 12 Javascript
JS使用数组实现的队列功能示例
Mar 04 Javascript
vue组件之间的数据传递方法详解
Apr 19 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
vue使用vant中的checkbox实现全选功能
Nov 17 Vue.js
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
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
解析strtr函数的效率问题
2013/06/26 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
使用python 获取进程pid号的方法
2014/03/10 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
遗传算法python版
2018/03/19 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
复古服装:RetroStage
2019/05/10 全球购物
计算机专业个人简短的自我评价
2013/10/23 职场文书
《木笛》教学反思
2014/03/01 职场文书
婚前保证书范文
2015/02/28 职场文书
勇敢的心观后感
2015/06/09 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
numpy数据类型dtype转换实现
2021/04/24 Python
golang的文件创建及读写操作
2022/04/14 Golang