Как вызвать метод i sweetalert 2

В моем проекте angular 4 я использую тему с sweetalert 2, я хочу вызвать свой метод, когда пользователь нажимает кнопку подтверждения, но кажется, что я не могу вызвать какой-либо метод внутри этой функции

swal({
  title: 'Are you sure?',
  text: "You won't be able to revert this!",
  type: 'warning',
  showCancelButton: true,
  confirmButtonColor: '#3085d6',
  cancelButtonColor: '#d33',
  confirmButtonText: 'Yes, delete it!'
}).then(function () {

  // I want to call my method here but I can't do this.myMethod()

})

Я знаю, что это не angular sweetalert, но можно ли заставить его работать без изменений?


person Alessandro Celeghin    schedule 18.08.2017    source источник


Ответы (2)


Используйте обозначение стрелочной функции () =>. Когда вы используете ключевое слово function, вы теряете доступ к this. Вместо этого измените свой код на следующий:

swal({
  title: 'Are you sure?',
  text: "You won't be able to revert this!",
  type: 'warning',
  showCancelButton: true,
  confirmButtonColor: '#3085d6',
  cancelButtonColor: '#d33',
  confirmButtonText: 'Yes, delete it!'
}).then(()=> {

  this.myMethod(); // this should execute now

})
person Faisal    schedule 18.08.2017
comment
Рад помочь @ m007 :) - person Faisal; 07.09.2017

Правильный ответ мне тоже помог, хотя мне приходилось решать, как отловить ошибку «Не поймано в обещании». Я подумал, что просто добавлю это здесь для завершения, если кому-то будет полезно использовать cancelButton.

swal({
   //code         
}).then(()=> {
   //code
},(error: any) => console.log(error));
person Jnr    schedule 15.11.2018