在Angular6中清除表单的提交状态

时间:2019-02-27 15:55:06

标签: javascript angular typescript

是否可以在Angular 6中将提交状态手动设置为true / false?我可以markAsPristine和form.reset(),但是这些对提交状态没有影响...

表单以模态形式存在,并在提交后继续存在于DOM中。这将导致myForm.submitted为true,并在模式再次打开时触发CSS错误类。

提前谢谢!

解决方案: 我想要的是@igor resetForm()所规定的,但是我使用它的方式有误。

  myForm.form.controls['description'].reset(); // works perfectly fine
  myForm.form.resetForm(); // is not a function
  myForm.resetForm(); // works perfectly fine

3 个答案:

答案 0 :(得分:3)

致电NgForm.resetForm

文档:

  

resetForm()

     

将表单重置为初始值并重置其提交状态。

答案 1 :(得分:2)

Angular的NgForm.resetForm()函数声称可以重置提交的状态:https://angular.io/api/forms/NgForm#resetform

引用文档:

  

resetForm()-将表单重置为初始值并重置其提交状态。

     

resetForm(值:任何=未定义):无效

     

value-any-表单的新值。可选的。默认值为未定义。

     

返回无效

答案 2 :(得分:1)

如果NgForm.resetForm不是您要找的内容,请阅读以下内容

FormGroup本身没有选项来手动设置提交的属性。

但是您可以做的是获取指令的引用并在该指令上提交设置

在您的模板中

<form [formGroup]="myForm" #myFormDirective></form>

和您的打字稿中

@ViewChild('myFormDirective',  {read: FormGroupDirective}) myFormDirective: FormGroupDirective;


setSubmit(state) {
  (this.myFormDirectiveas any).submitted = state;
}