Сохранение / отмена запроса перед закрытием модального режима (когда модальный режим был закрыт с помощью ESC / click-background) - PullRequest
1 голос
/ 11 октября 2019

При ручном закрытии модального режима проблем нет. Я просто создаю некоторое приглашение, и только когда приглашение (sweetalert) закрыто, я вызываю метод BsModalRef.hide ().

Теперь, когда модальное окно закрывается встроенным в ESC-ключом начальной загрузки исобытия click-outside, я все еще могу подписаться на событие BsModalService.onHide. Но я не знаю, как предотвратить модальное закрытие, пока на приглашение не ответили. bsModalRef: BsModalRef;

constructor(injector: Injector,
            public bsModalService: BsModalService) {
    super(injector);
}

ngOnInit(): void {
    this.bsModalRef = this.bsModalService.show(SomeFormComponent,
        {
            keyboard: true,
            backdrop: true
        });

    this.bsModalService.onHide.subscribe((e) => {
        // PROBLEM: modal has already closed here...
        swal({
            text: 'u wanna save changes?',
            title: 'prompt',
            icon: 'warning'
        }).open().then((answer: ModalResult) => {
            switch(answer) {
                case ModalResult.Save:
                    // i would like to save and close modal afterwards
                    break;
                case ModalResult.DontSave:
                    // close modal
                    break;
                default:
                    // stay on modal
                    break;
            }
        });
    });
}

Помощь очень ценится, спасибо!

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Так что с ngx-bootstrap у вас нет такого события.

Я решил проблему с помощью @ ng-bootstrap вместо пакета ngx-bootstrap. Для этого мне также пришлось перейти с начальной загрузки 3 до таблиц стилей начальной загрузки 4.

После этого я могу использовать событие beforeDismiss.

Спасибо за ввод

0 голосов
/ 11 октября 2019

Я полагаю, что под Bs вы подразумеваете бутстрап, и у него есть событие beforeDismiss. Попробуйте это.

...