Angular7 Mat-select перехватить изменение - PullRequest
0 голосов
/ 23 мая 2019

В моем сценарии использования у меня есть выпадающий список (mat-select), который заполняет несколько полей ввода. Любое изменение заполнит поля по-разному. Поскольку пользователь может изменить поле, я хочу спросить пользователя до того, как будет выполнено последнее изменение, если он согласится очистить (или изменить) все поля. В случае НЕТ изменение выбора не произойдет, и все поля должны остаться.

Я пытался сократить вариант использования до образца . Я могу выбрать предмет из выпадающего списка и выполнить некоторые дальнейшие действия.

  <mat-select (selectionChange)="intercept($event.value)">
    <mat-option *ngFor="let food of foods" [value]="food.value" >
      {{food.viewValue}}
    </mat-option>
  </mat-select>

Но на момент выдачи selectionchange содержимое раскрывающегося списка уже изменилось. Для образца я хотел бы иметь, например,

  1. Выберите, например, Пицца
  2. Появляется всплывающее окно
  3. ! Раскрывающийся список остается в исходном выделении, а после исчезновения всплывающего окна происходит изменение!
  4. Выберите, например, Тако
  5. Появляется всплывающее окно
  6. ! Раскрывающийся список остается в исходном выделении (= Tacos), и после исчезновения всплывающего окна происходит изменение!

Понятия не имею, как перехватить событие изменения до того, как произойдет изменение.

1 Ответ

0 голосов
/ 23 мая 2019

Насколько я знаю, вы не можете предотвратить это изменение.Единственная возможность - сохранить старое значение выбора и сбросить его до этого значения, если пользователь отменяет модальное / всплывающее окно.У меня была такая же проблема некоторое время назад.

Редактировать: Может быть, это может помочь Тема

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...