gpt4 book ai didi

javascript - 将 Alertify 与 canDeactivate 结合使用

转载 作者:行者123 更新时间:2023-12-03 00:00:10 27 4
gpt4 key购买 nike

我想用 canDeactivate 中的 Alertify 确认替换经典确认。我尝试实现以下代码,但单击“确定”时它不会返回 True。有人可以就此提出建议吗?

import { Injectable } from '@angular/core';
import { CanDeactivate } from '@angular/router';
import { SignupComponent } from 'src/app/signup/signup.component';
import { AlertifyService } from 'src/app/_helpers/alertify.service';

@Injectable()
export class SignUpPUS implements CanDeactivate <SignupComponent> {

constructor(private alertifyService: AlertifyService) {}

canDeactivate(component: SignupComponent) {
if (component.signUpForm.dirty) {

this.alertifyService.confirm('Leave Page', 'Are you sure you want to continue? Any unsaved changes will be lost', () => {
return true;
});

}
return false;
}

}

最佳答案

由于 confirm 执行异步操作,您需要使用异步解决方案,例如 ObservablePromiseasync/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。

关于javascript - 将 Alertify 与 canDeactivate 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55214245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com