I need to create canDeactiovateGuard to prevent user losing form data when trying to leave form page. This code below doesn't work since return canDeactivate works before canDeactivate = confirmed. I'm not sure how to fix this.
@Injectable()
export class CanDeactivateGuard implements CanDeactivate<Component> {
canDeactivate(component: Component): boolean {
let canDeactivate: boolean;
if (component.formValueChanged) {
component.confirmService.confirm("You have unsaved data. Are you sure?")
.pipe(first())
.subscribe((confirmed: boolean) => {
canDeactivate = confirmed;
});
} else {
canDeactivate = true;
}
return canDeactivate;
}
}