详解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 相关文章推荐
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
Sep 16 Javascript
针对初学者的jQuery入门指南
Aug 15 Javascript
javascript性能优化之事件委托实例详解
Dec 12 Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 Javascript
js实现文字无缝向上滚动
Feb 16 Javascript
微信小程序中this.data与this.setData的区别详解
Sep 17 Javascript
关于js陀螺仪的理解分析
Apr 11 Javascript
详解Vue源码中一些util函数
Apr 24 Javascript
JavaScript实现多个物体同时运动
Mar 12 Javascript
vue路由结构可设一层方便动态添加路由操作
Aug 31 Javascript
JavaScript常用8种数组去重代码实例
Sep 09 Javascript
用webAPI实现图片放大镜效果
Nov 23 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
php中定义网站根目录的常用方法
2010/08/08 PHP
PHP分页函数代码(简单实用型)
2010/12/02 PHP
smarty简单入门实例
2014/11/28 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
layui树形菜单动态遍历的例子
2019/09/23 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
Python struct.unpack
2008/09/06 Python
python实现排序算法
2014/02/14 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
django API 中接口的互相调用实例
2020/04/01 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
大学四年规划书范文
2013/12/27 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
mysql中关键词exists的用法实例详解
2022/06/10 MySQL