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,然后才能验证控件或设置一个值。 –