Возврат Наблюдаемый в 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();
}

Ответы на вопрос(2)

Ваш ответ на вопрос