Возврат Наблюдаемый в canDeactivate не работает
У меня есть модальное диалоговое окно подтверждения / отмены, которое появляется, когда пользователь покидает маршрут. Я делаю это, используя охрану с методом canDeactivate. Однако я хочу, чтобы canDeactivate подождал, пока он не получит ответ от модального устройства, прежде чем что-либо возвращать.
Я пытался сделать это, возвращая наблюдаемое, но это не работает.
canDeactivate(): Observable<boolean> | boolean {
if(this.isFormStarted()) {
this.formService.showExitModal(true);
return this.formService.getModalSelectionObservable();
}
else {
return true;
}
}
Ничего не происходит, когда я нажимаю кнопку подтверждения, хотя я вижу, что наблюдаемое работает нормально, когда я выполняю console.log внутри блока if
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();
}