Как получить событие клика на входе в поле mat-form? - PullRequest
1 голос
/ 26 марта 2019

Я хочу очистить выбранную опцию при нажатии кнопки автозаполнения:

  <mat-form-field class="example-full-width" (click)="clear()" appearance="outline">
    <input matInput placeholder="State" aria-label="State" 
    [matAutocomplete]="auto" [formControl]="stateCtrl">
    <mat-autocomplete #auto="matAutocomplete">
      <mat-option *ngFor="let state of filteredStates | async" 
      [value]="state.name">
      </mat-option>
    </mat-autocomplete>
  </mat-form-field> 

Но клик вызывается, даже когда вы нажимаете немного ниже (в форме есть поле)

Пример, показывающий ввод сброса, нажав снаружи

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Используйте (click)="clear()" для тега <input>,
и не для тега mat-form-field.

Добавьте следующее к styles.css, чтобы перезаписать css, и сделайте так, чтобы input тег закрывал контейнер на всю высоту.

.mat-form-field-appearance-outline .mat-form-field-infix {
  padding: 0 !important;
  border-top: 0;
}
input.mat-input-element {
  padding: 1.84375em 0 1em 0;
}

Демонстрация Stackblitz - только очистить от ввода нажмите

0 голосов
/ 26 марта 2019

Я нашел способ, не меняя стиль, просто добавив событие click для mat-form-field-flex

document
  .querySelectorAll('p-autocomplete .mat-form-field-flex')[0]
  .addEventListener('click', (ev) => this.clear(ev));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...