angular - 在 onSubmit 中等待有效性检查的最佳方法是什么
问题描述
我有一个反应式表单,它具有服务器 API 的异步验证器。由于特殊情况,我需要在提交函数中重新验证表单。我目前正在努力等待重新验证完成。请指教。谢谢。
onSubmit() {
this.myForm.updateValueAndValidity();
someObservable() // what to put here?
.subscribe((stillValid: boolean) => {
if (stillValid) send();
}
}
解决方案
哇,我写了关于 Angular 表单无法优雅地处理这个问题的文章。 成功经营人人有责
如果我们可以将自定义事件写入 FormGroup 的 statusMessages,那么可能性是无穷无尽的。但我们不能。
没有办法知道或使用任何类型的成功事件。一个存在,但从反应形式的角度来看它不可用。Angular 团队知道这一点。
当我在一个页面上有多个表单时,我会这样做:
public onSubmit(subject: string, index: number) {
if (!this.form.valid) { return; } // validity check
this.formSuccess(index);
}
public formSuccess(index): void {
this.success[index] = false;
if (this.success[index] === false) {
this.success[index] = true;
setTimeout(() => {
this.success[index] = false;
}, 2000);
}
}
视图:.submitted.success
淡入 5 秒后淡出。
<div class="submitted" [ngClass]="{'success': success}">
Thanks for submitting!
</div>
(我将制作一个简单的 StackBlitz 示例并回发)
推荐阅读
- android - 推送通知不适用于 RN0.62.2
- reactjs - npm create-react-app 命令在 Windows 8 上未成功完成
- kotlin - Kotlin JUnit5 测试类是否应该包含包语句?
- python - 将字符串中的数据分成不同的变量
- python - 我在不同的位置有两个文件,一个文件包含 .jpg,另一个文件包含 .xml。我想比较他们的名字和打印差异
- r - 创建一个支持带引号和不带引号的参数的函数(使用 data.table),然后在 purrr::map (或 lapply)中工作
- python-3.x - 将参数传递给导入的脚本?
- snmp - 无法使用 snmpget CLI 命令执行 SNMP GET,但能够使用 MIB 浏览器执行 SNMP GET
- oracle - Oracle 中等效的 SQL_NO_CACHE 命令
- unity3d - 启动游戏时的小窗口(Unity)