Как я могу проверить причину отклонения с помощью закусочной Angular Material?

В примере снэк-бара в документации Angular Material действие установлено на undo, Я также хочу отменить снэк-бар.

Но есть одна проблема. afterDismissed Событие вызывается при нажатии кнопки отклонения, а также по истечении времени. Таким образом, моя кнопка очистки формы очистит форму и покажет снэк-бар, но через 5 секунд ввод вернется.

Есть ли способ проверить, вызывается ли dismiss кнопкой отмены? Я не хочу использовать пользовательскую Snackbar, потому что мне нужно переделать дизайн Snackbar...

2 ответа

Решение

Когда вы подписываетесь на afterDismissed событие вы должны быть в состоянии узнать, произошло ли это событие от действия закусочной или нет.

Так, например, если вы открываете свою закусочную:

const snackBarRef = this.snackBar.open('Dummy message', 'Undo', {duration: 5000});

Тогда подпишитесь на событие:

snackBarRef.afterDismissed().subscribe(info => {
  if (info.dismissedByAction === true) {
    // your code for handling this goes here
  }
});

Я не уверен, когда он был добавлен, но MatSnackbarRef теперь включает отдельную наблюдаемую для onAction, который вызывается только тогда, когда кнопка фактически нажата.

Другие вопросы по тегам