以角反應形式。如何在成功提交後僅重置表單的狀態?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