2017-05-03 99 views
4

以角反应形式。如何在成功提交后仅重置表单的状态Angular Reactive forms:如何重置表单状态并在提交后保留值

下面的过程是:

  • 创建形式和服务结果setValue
  • 修改值并提交表单
  • 如果表单正确提交到服务,然后复位并保持价值

如何保持修改后的值并将窗体重置为原始状态。

form.reset()只是清空窗体。但如果我不叫它,状态不会重置,例如我的验证取决于表单状态类(原始,肮脏,有效等)仍然存在。

+0

我通常创建像在initForm的方法,我呼吁ngInit,并提交形式 – mareks

回答

4

@smnbbrv的解决方案的工作非常好。

您也可以将您的实际表单值提供给reset()方法。

鉴于事实myReactiveForm是组件中的反应形式。成功后提交表单的(通过调用例如服务),那么你可以这样做:

this.myReactiveForm.reset(this.myReactiveForm.value); 

它会重置表单,并设置了“新”的形式值你形成有同样的价值。

这种方法可以在英雄例如游览待见Official Angular.io doc

+1

后再次,这是这么多的黑客攻击:d。然而,我必须承认它应该工作;) – smnbbrv

+0

是的!通过阅读Angular doc,我们可以找到惊人的解决方案。这些家伙太棒了! – BlackHoleGalaxy

+0

嗯,自从angular2测试版阅读它四次后,我就厌倦了阅读它,所以我会把它留给那些喜欢它的人:)我其实并不觉得这是一个好的解决方案,因为它不必要地重写所有的形成价值观,并可能导致巨大形式的性能问题。 – smnbbrv

3

这几乎是简单:

this.form.markAsPristine(); 
this.form.markAsUntouched(); 

这将重置表格元数据和形式是质朴又

相关问题