Почему один элемент с настраиваемой директивой вызывает событие изменения другого элемента в Angular?

У меня есть форма ниже с несколькими элементами. Один элемент — это ввод с пользовательской директивой для получения данных о местоположении Google. Другой элемент — это элемент загрузки файла.

Когда я ввожу значение (в фокусе) в верхнем элементе и нажимаю клавишу ввода, оно запускает событие fileChangeEvent() в элементе #fileInput.

Мне трудно понять, почему?

FYI - я пытался изменить

(change)="fileChangeEvent($event)"

to

(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>


person user1186050    schedule 20.11.2020    source источник
comment
вы пробовали: $event.stopPropagation()?   -  person pixelbits    schedule 20.11.2020
comment
но это не должно запускать событие изменения другого элемента для начала ... почему это так? У меня есть что-то еще где-то, что может вызвать это?   -  person user1186050    schedule 20.11.2020
comment
если я закомментирую '‹button (click)=fileInput.click() class=btn btn-yb w-100›Upload Photo‹/button›', то он не сработает, когда я нажму return в верхнем элементе, но тогда кнопки нет   -  person user1186050    schedule 20.11.2020


Ответы (1)


Взгляните на эту проблему, я думаю, что ваша проблема в том, что ваша кнопка находится в форме, поэтому действие по умолчанию для клавиши ввода - отправить форму. По умолчанию ваша кнопка имеет тип отправки.

person Hopey One    schedule 20.11.2020
comment
Благодарность! Я не знал, что кнопка по умолчанию была отправлена!!!!!!! - person user1186050; 20.11.2020