angular - 为什么一个带有自定义指令的元素会触发 Angular 中的另一个元素更改事件?
问题描述
我在下面有一个包含多个元素的表单。一个元素是带有用于获取 google 位置数据的自定义指令的输入。另一个元素是文件上传元素。
当我在顶部元素中输入一个值(焦点)并按 Enter 键时,它会在 #fileInput 元素中触发“fileChangeEvent()”事件。
我很难理解为什么?
仅供参考 - 我尝试改变
(change)="fileChangeEvent($event)"
至
(click)="fileChangeEvent($event)"
它仍然会被触发
形式 -
<form [formGroup]="editForm">
// pressing enter, with this element in focus, triggers fileChangeEvent($event) in #fileInput element below
<input #city appGooglePlaces (onSelect)="setAddress($event)" formControlName="city" class="form-control google-place-input">
<button (click)="fileInput.click()" class="btn btn-yb w-100">Upload Photo</button>
<input type="file" #fileInput (change)="fileChangeEvent($event)" />
</form>
解决方案
看看这个问题,我认为您的问题是您的按钮在表单中,因此输入键的默认操作是提交表单。默认情况下,您的按钮类型为“提交”。
推荐阅读
- c# - 如何从另一个类更新窗口应用程序中的进度条?
- angular - 将 ion-item 添加到先前的 ion-item 而不是替换它
- vba - VBA 宏中的内存泄漏
- sql-server - SQL相关:对相同类别求和并仅选择第一条记录
- apache-spark - 为什么 Hive/Spark 中的字符串列没有最小/最大统计信息
- java - 这是数据库连接和自动关闭资源的正确实现吗?
- oracle - GDK-05043 导入导出表时月份无效
- ios - 从绘制的 UIView 中擦除文本
- node.js - 如何将大型 JSON 数据导出到 Excel 文件
- java - 什么会减慢 Apache Camel 的 ActiveMQ 消息发送速度?