我有一个函数canDeactivate
,应该返回true
或false
。这可以通过调用openConfirmDialog()
函数的结果来确定,该函数打开ngx-bootstrap模式'确认'对话框并等待用户响应(可以导致true
或false
)。这是代码:
canDeactivate(component: ComponentCanDeactivate): boolean | Observable<boolean> {
// if there are no pending changes, just allow deactivation; else confirm first
return component.canDeactivate() ?
true :
this.openConfirmDialog();
}
openConfirmDialog() {
this.modalRef = this.modalService.show(ConfirmationComponent);
return this.modalRef.content.onClose.subscribe(result => {
console.log('results', result);
})
}
订阅result
的{{1}}正在发挥作用。我可以成功记录this.modalRef.content.onClose
或true
。当结果变为false
或true
时,我如何返回 false
或true
作为false
的值?或者我错过了这一点,我应该以不同的方式做事吗?
我的canDeactivate
看起来像这样,它将ConfirmationComponent
定义为onClose
(特别是Observable<boolean>
),所以我可以成功返回一个布尔可观察对象,但我该怎么做每当Subject<boolean>
收到canDeactivate
或true
的值时,让false
返回openConfirmDialog
或true
?
false
答案 0 :(得分:1)
感谢@David我将我的订阅更改为onClose
而不是map
,而且这有效:
subscribe
然而,正如@Ingo Burk指出的那样,我可以简单地使用:
openConfirmDialog() {
this.modalRef = this.modalService.show(ConfirmationComponent);
// line below - change from 'subscribe' to 'map'
return this.modalRef.content.onClose.map(result => {
return result;
})
}