详解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 相关文章推荐
让回调函数 showResponse 也带上参数的代码
Aug 13 Javascript
js返回上一页并刷新代码整理
Dec 21 Javascript
Javascript 中 null、NaN和undefined的区别总结
Apr 10 Javascript
javascript实例分享---具有立体效果的图片特效
Jun 08 Javascript
Backbone.js中的集合详解
Jan 14 Javascript
JS 作用域与作用域链详解
Apr 07 Javascript
基于JavaScript实现简单的随机抽奖小程序
Jan 05 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
Jun 03 Javascript
js实现对table的增加行和删除行的操作方法
Oct 13 Javascript
vue 解决数组赋值无法渲染在页面的问题
Oct 28 Javascript
vue把输入框的内容添加到页面的实例讲解
Nov 11 Javascript
JavaScript中的惰性载入函数及优势
Feb 18 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
css配合jquery美化 select
2013/11/29 Javascript
javascript常用函数(2)
2015/11/05 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
js表单登陆验证示例
2016/10/19 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
vue中tab选项卡的实现思路
2018/11/25 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
Selenium定位元素操作示例
2018/08/10 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
Python 如何对文件目录操作
2020/07/10 Python
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
高中打架检讨书
2014/02/13 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
促销活动总结范文
2014/04/30 职场文书
党员演讲稿
2014/09/04 职场文书
新党章的学习心得体会
2014/11/07 职场文书
初中成绩单评语
2014/12/29 职场文书
安全守法证明
2015/06/23 职场文书
车间安全生产管理制度
2015/08/06 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书