Поскольку confirm
выполняет асинхронную операцию, вам необходимо использовать асинхронное решение, такое как Observable
, Promise
или async/await
.
Вы можете использовать Observable
следующим образом:
canDeactivate(component: SignupComponent) {
return new Observable((observer) => {
if (component.signUpForm.dirty) {
this.alertifyService.confirm('Leave Page', 'Are you sure you want to continue? Any unsaved changes will be lost',
() => {
observer.next(true);
},
() => {
observer.next(false);
}
);
}else{
observer.next(false);
}
observer.complete();
});
}
Редактировать Примечание: обратите внимание, что я добавил второй обратный вызов для confirm
, чтобы убедиться, что он возвращает false, когда пользователь отменяет подтверждение.