以角反应形式。如何在成功提交后仅重置表单的状态?Angular Reactive forms:如何重置表单状态并在提交后保留值
下面的过程是:
- 创建形式和服务结果
setValue
- 修改值并提交表单
- 如果表单正确提交到服务,然后复位并保持价值
如何保持修改后的值并将窗体重置为原始状态。
form.reset()只是清空窗体。但如果我不叫它,状态不会重置,例如我的验证取决于表单状态类(原始,肮脏,有效等)仍然存在。
以角反应形式。如何在成功提交后仅重置表单的状态?Angular Reactive forms:如何重置表单状态并在提交后保留值
下面的过程是:
setValue
如何保持修改后的值并将窗体重置为原始状态。
form.reset()只是清空窗体。但如果我不叫它,状态不会重置,例如我的验证取决于表单状态类(原始,肮脏,有效等)仍然存在。
@smnbbrv的解决方案的工作非常好。
您也可以将您的实际表单值提供给reset()方法。
鉴于事实myReactiveForm
是组件中的反应形式。成功后提交表单的(通过调用例如服务),那么你可以这样做:
this.myReactiveForm.reset(this.myReactiveForm.value);
它会重置表单,并设置了“新”的形式值你形成有同样的价值。
这种方法可以在英雄例如游览待见Official Angular.io doc
后再次,这是这么多的黑客攻击:d。然而,我必须承认它应该工作;) – smnbbrv
是的!通过阅读Angular doc,我们可以找到惊人的解决方案。这些家伙太棒了! – BlackHoleGalaxy
嗯,自从angular2测试版阅读它四次后,我就厌倦了阅读它,所以我会把它留给那些喜欢它的人:)我其实并不觉得这是一个好的解决方案,因为它不必要地重写所有的形成价值观,并可能导致巨大形式的性能问题。 – smnbbrv
这几乎是简单:
this.form.markAsPristine();
this.form.markAsUntouched();
这将重置表格元数据和形式是质朴又
我通常创建像在initForm的方法,我呼吁ngInit,并提交形式 – mareks