0
當窗體設置爲有效,我有以下組成部分:Angular4,initalizing
@ViewChild('myForm') myForm: NgForm
ngAfterViewInit(): void {
this.myForm.valueChanges
.subscribe(() => {
if(this.myForm.valid) {
doSomethingWithTheFormData()
}
})
}
,在我的模板:
<form #myForm="ngForm">
...
</form>
唯一擔心的是,默認情況myForm.valid是true
,甚至雖然我有一些required
字段未設置。因此,我的doSomethingWithTheFormData()
失敗,因爲其中一些失蹤。 這就好像表單的初始化沒有完全完成(儘管在ngAfterViewInit()
中)。
我設法解決了這個問題,在我的情況下添加了一個但我覺得這不是這樣做的正確方法。
嗯,只是一個cauz我想在這裏使用模板驅動的表單而不是模型驅動的表單 – Scipion
模板驅動的表單委託創建他們的表單控件爲指令。這些需要花費多個週期來構建整個樹,因此在操縱任何這些控件之前必須等待。使用ngAfterViewInit你必須使用setTimeout,然後才能驗證控件或設置一個值。 –