возвращать значение из машинописной наблюдаемой функции при нажатии кнопки - PullRequest
0 голосов
/ 05 апреля 2020

у меня следующий код

removeAlert() : Observable<boolean> {
    Swal.fire({
      title: 'delete this file ?',
      text: 'sth',
      icon: 'warning',
      showCancelButton: true,
      confirmButtonText: 'ok',
      cancelButtonText: 'cancel'
    }).then((result) => {
      if (result.value) {
        return of(true) ;
      } 
      else if (result.dismiss === Swal.DismissReason.cancel) {
        this.showError("canceled" , "sth else");
        return of(false) ;
      }
    });
    //return of(false) ;
  }

как я могу наблюдать значение после клика и вернуть его

я имею в виду эту часть if(result.value)

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Создайте Subject и создайте для него значение next в вашем выражении if/else. Обязательно .subscribe() для субъекта до передачи значения, иначе ничего не произойдет. В моем коде я подписан на метод жизненного цикла ngOnInit:

myBool: boolean;
mySubject: Subject<boolean> = new Subject();

ngOnInit() {
  this.mySubject.subscribe(value => console.log('Value: ', value));
}

removeAlert() {
  if (this.myBool) {
    this.mySubject.next(true);
  } else {
    this.mySubject.next(false);
  }
  this.myBool = !this.myBool;
}

Привязать событие click к методу removeAlert() в шаблоне компонента:

<button (click)="removeAlert()">Click me</button>

Здесь это демонстрация стекаблиц с рабочим кодом выше.

0 голосов
/ 05 апреля 2020

Мне интересно, чего именно вы хотите достичь. Я предполагаю, что вы можете использовать объект Subject.

private subject = new Subject<boolean>();


swal.fire({
...
})
.then(() => this.subject.next(true))

И затем подписаться subject.

...