angular - 响应式表单提交状态
问题描述
我想知道是否有任何方法可以检索反应式表单的“提交”状态。
使用模板驱动的表单,您可以通过“ngForm”访问 FormGroupDirective,如下所示
<form #form='ngForm' (ngOnSubmit)="handleSubmit()">
<p *ngIf="form.invalid && form.submitted">Invalid</p>
<button type="submit">Submit</button>
</form>
但是,当使用反应式表单时,如果不声明我自己的变量,我在提交时更新/重置,我就无法实现相同的功能,这看起来很奇怪,因为在模板驱动的变体中不需要这样做。
到目前为止我已经尝试过:
- (在组件中) @ViewChild(FormGroupDirective) formGroupDirective / (在模板中) formGroupDirective.submitted
- ExpressionChangedAfterItHasBeenCheckedError
- form="ngForm" [formGroup]="myForm"
- 有多个指令将“exportAs”设置为“ngForm”
有什么建议么?
编辑:反应形式
<form [formGroup]="myForm" (submit)="doSomething()">
<input formControlName="myInput">
<p *ngIf="myForm.invalid">This is visible before submitting</p>
<button type="submit">Submit</button>
</form>
解决方案
Stackblitz:https ://stackblitz.com/edit/angular-8-reactive-form-validation-vv7npe
在表单标签上使用模板引用变量#form="ngForm"
,然后你可以直接使用*ngIf="myForm.invalid && form.submitted"
<form [formGroup]="myForm" #form="ngForm" (ngSubmit)="doSomething()">
<input formControlName="myInput">
<p *ngIf="myForm.invalid && form.submitted">This is visible before submitting</p>
<button type="submit">Submit</button>
</form>
推荐阅读
- visual-studio-extensions - 如何适应 Visual Studio 2019 的扩展?
- macos - OSX命令行:在运行之前回显命令吗?
- c# - 无法在我们尝试注册的 Nordstrom 网站上找到电子邮件和密码元素
- java - 如何返回等效数组
- php - 即使使用 PHP 7.2,Composer 也会安装 symfony 3.4 而不是 4.x
- dependencies - 安装 rpm 包时自动安装依赖项
- python - 使用 rpy2 安装本地包 - 无效包
- c# - MVC 控制器一直获取空模型
- java - 如何删除 Java FX Accordion 默认边框?
- javascript - 在另一个函数中重复一个函数