Volver Observable en canDeactivate no funciona

Tengo un diálogo modal de confirmación / cancelación que aparece cuando un usuario deja una ruta. Hago esto usando un protector con el método canDeactivate. Sin embargo, quiero que CanDeactivate espere hasta que obtenga una respuesta del modal antes de devolver cualquier cosa.

He intentado hacer esto devolviendo un observable pero no funciona.

canDeactivate(): Observable<boolean> | boolean {
    if(this.isFormStarted()) {
        this.formService.showExitModal(true);
        return this.formService.getModalSelectionObservable();
    }
    else {
        return true;
    }
}

No sucede nada cuando hago clic en confirmar, aunque puedo ver que lo observable funciona bien cuando hago una consola.log dentro del bloque if

this.formService.getModalSelectionObservable().subscribe(
        value => console.log("dialog value: " + value)
    );

Así es como se ve el servicio de formularios.

private modalConfirmation = new Subject<boolean>();

public setModalSelectionObservable(confirmLeave: boolean) {
    this.modalConfirmation.next(confirmLeave);
}
public getModalSelectionObservable(): Observable<boolean> {
    return this.modalConfirmation.asObservable();
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta