Angular6中如何清除表单提交状态?能否手动设置submitted值?
问题:Angular 6中能否手动设置表单的submitted状态?
我在Angular 6开发时碰到一个棘手的问题:表单放在模态框里,提交后模态框的DOM不会被销毁,导致myForm.submitted一直处于true状态。我试过用markAsPristine()和form.reset()方法,但这两个方法完全不影响submitted状态,再次打开模态框时,表单的CSS错误类直接被触发,体验很差。想请教下有没有办法手动把submitted状态设为true或者false?
解决方案
其实你需要的resetForm()方法就是解决这个问题的关键,只是之前的调用方式有误:
- 重置单个表单控件的写法是没问题的:
myForm.form.controls['description'].reset(); // 运行正常 - 错误的调用方式(会提示“不是一个函数”):
myForm.form.resetForm(); // 无效 - 正确的重置整个表单写法(会同时把submitted状态重置为false):
myForm.resetForm(); // 运行正常
这个方法会帮你重置表单的所有状态,包括submitted,刚好能解决模态框再次打开时的CSS错误类问题~
内容的提问来源于stack exchange,提问作者Dbrandt
相关产品推荐
相关产品推荐

