Return Observable in canDeactivate funktioniert nicht

Ich habe ein modales Dialogfeld zum Bestätigen / Abbrechen, das angezeigt wird, wenn ein Benutzer eine Route verlässt. Ich verwende dazu einen Guard mit der canDeactivate-Methode. Ich möchte jedoch, dass canDeactivate wartet, bis es eine Antwort vom Modal erhält, bevor es etwas zurückgibt.

Ich habe versucht, dies zu tun, indem ich eine beobachtbare Datei zurückgebe, aber sie funktioniert nicht.

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

Nichts passiert, wenn ich auf "Bestätigen" klicke, obwohl ich sehe, dass das Observable einwandfrei funktioniert, wenn ich ein console.log im if-Block mache.

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

So sieht der Formulardienst aus.

private modalConfirmation = new Subject<boolean>();

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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage