angular - Angular CanDeactivate Guard 不适用于 Sweet Alert JS
问题描述
我CanDeactivate
在 Angular 中使用 Guard 和Sweet Alert js。但是确定点击不会被触发。我是Angular的新手请帮忙。这是带有甜蜜警报的代码。显示甜蜜警报,但确定单击不起作用。
export class QuestionEditGuard implements CanDeactivate<FeedbackQuestionEditPage> {
canDeactivate(component: FeedbackQuestionEditPage): Observable<boolean> | Promise<boolean> | boolean {
if (component.questionForm.dirty) {
const question = component.questionForm.get('description').value || 'New Question';
swal.fire({
title: 'Hey there!!',
text: `Navigate away and lose all changes to ${question}?`,
type: 'warning',
showCancelButton: true,
confirmButtonText: 'OK',
}).then((result) => {
return true;
});
return false;
}
return true;
}
}
但是正常情况Confirm
下它可以工作。
export class QuestionEditGuard implements CanDeactivate<FeedbackQuestionEditPage> {
canDeactivate(component: FeedbackQuestionEditPage): Observable<boolean> | Promise<boolean> | boolean {
if (component.questionForm.dirty) {
const question = component.questionForm.get('description').value || 'New Question';
return confirm(`Navigate away and lose all changes to ${question}?`);
}
return true;
}
}
我错过了什么吗?
解决方案
您必须像使用普通函数一样使用return
该功能Swal.fire
confirm
export class QuestionEditGuard implements CanDeactivate<FeedbackQuestionEditPage> {
canDeactivate(component: FeedbackQuestionEditPage): Observable<boolean> | Promise<boolean> | boolean {
if (component.questionForm.dirty) {
const question = component.questionForm.get('description').value || 'New Question';
return swal.fire({ // <- return here
title: 'Hey there!!',
text: `Navigate away and lose all changes to ${question}?`,
type: 'warning',
showCancelButton: true,
confirmButtonText: 'OK',
}).then((result) => {
if (result.value) { // check if OK pressed
return true;
} else {
return false;
}
})
} else {
return true;
}
}
}
推荐阅读
- javascript - 为什么我得到请求方法“GET”而不是“POST”?
- visual-studio-code - sublime中箭头键的键绑定
- javascript - react-hook-form 和搜索栏错误?
- elasticsearch - Elasticsearch - 分片中每个别名的 tf-idf 计算
- javascript - 如何与@rollup/plugin-node-resolve 捆绑?
- javascript - 捕获 HTML 表单“Enter”按执行 AJAX,而不是 Post
- drop-down-menu - 根据下拉列表计算
- ios - iOS14上UILabel中显示的NSAttributedString错误
- pandas - 计算所有组的某一列的最小值,并从该组的某一列的所有值中减去该值
- python - 如何使用 Python API 访问 minio 存储桶,读取所有文件夹并将它们写入数据库?