我有一个确认/取消模式对话框,当用户离开路线时会弹出。我通过使用带有 canDeactivate 方法的守卫来做到这一点。但是,我希望 canDeactivate 等到它从模式中获得响应,然后再返回任何内容。
我试图通过返回一个 observable 来做到这一点,但它不起作用。
canDeactivate(): Observable<boolean> | boolean {
if(this.isFormStarted()) {
this.formService.showExitModal(true);
return this.formService.getModalSelectionObservable();
}
else {
return true;
}
}
当我在 if 块中执行 console.log 时,即使我可以看到 observable 工作正常,当我单击确认时也没有发生任何事情
this.formService.getModalSelectionObservable().subscribe(
value => console.log("dialog value: " + value)
);
这是表单服务的外观。
private modalConfirmation = new Subject<boolean>();
public setModalSelectionObservable(confirmLeave: boolean) {
this.modalConfirmation.next(confirmLeave);
}
public getModalSelectionObservable(): Observable<boolean> {
return this.modalConfirmation.asObservable();
}