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 上面的工作代码。
我有以下代码
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 上面的工作代码。