详解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.ajax之beforeSend方法使用介绍
Dec 08 Javascript
angular.bind使用心得
Oct 26 Javascript
JS提交form表单实例分析
Dec 10 Javascript
jquery form表单获取内容以及绑定数据
Feb 24 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
May 24 Javascript
bootstrap datetimepicker2.3.11时间插件使用
Nov 19 Javascript
用jQuery实现优酷首页轮播图
Jan 09 Javascript
js从输入框读取内容,比较两个数字的大小方法
Mar 13 Javascript
Node.js开发第三方微信公众平台
Jun 05 Javascript
JavaScript实现异步图像上传功能
Jul 12 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
Jul 27 Javascript
jQuery实现放大镜案例
Oct 19 jQuery
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 var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
Python选课系统开发程序
2016/09/02 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
师范生自荐信范文
2013/10/06 职场文书
买房协议书
2014/04/11 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers
Elasticsearch 数据类型及管理
2022/04/19 Python
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python