【发布时间】:2019-11-26 05:16:03
【问题描述】:
每个内部都有多个具有不同 NgForm(模板驱动表单)的兄弟组件。所有这些都用父组件包装。父组件有验证按钮。我需要在父组件上的按钮上的单击事件中验证某些子 NgForm。
你会提出什么方法来解决这个问题?
// Parent template
<child id="0"></child>
<child id="1"></child>
// Parent component
validateChild(id: number) {
// need somehow reach child component NgForm with a particular id
}
// Child Component template
<form #myForm="ngForm">...</form>
// Child Component template
@ViewChild('myForm')
public myForm: NgForm;
当我说验证时 - 我的意思是指以下内容:
Object.keys(form.controls).forEach(key => {
form.controls[key].markAsTouched();
})
我正在考虑以下方法:
// Parent component
stages = [
{
validated: false
},
{
validated: false
},
]
// Parent component view
<child id="0" [validate]="stages[0].validated"></child>
<child id="1" [validate]="stages[1].validated"></child>
// Child component
@Input()
public set validate(value: boolean) {
if (value === true)
Object.keys(this.myForm.controls).forEach(key => {
this.myForm.controls[key].markAsTouched();
})
}
但我不太喜欢它..可能有更好的方法。因为这个没有额外的孩子 EventEmitter 我无法检查表单是否有效
【问题讨论】:
标签: angular