return 按下按钮时来自打字稿可观察函数的值

return value from typescript observable function when press button

我有以下代码

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) ;
  }

我如何观察点击后的价值 return 它

我是说这部分if(result.value)

我想知道你到底想达到什么目的。我猜你可以使用 Subject 对象。

private subject = new Subject<boolean>();


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

然后订阅subject

创建一个 Subject 并在您的 if/else 语句中发出一个 next 值。在发出一个值之前一定要 .subscribe() 到 Subject 否则什么都不会发生。在我的代码中,我订阅了 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;
}

将点击事件绑定到组件模板中的removeAlert()方法:

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

这是一个 stackblitz demo 上面的工作代码。