Как я могу проверить причину отклонения с помощью закусочной 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
, который вызывается только тогда, когда кнопка фактически нажата.