我有一个复杂的角度应用的问题。目前,我有一个大的嵌套角反应表单结构,其中有一个“主”FormGroup,其中包含多个FormGroup / FormArrays / FormControls。
例如:
FormGroup: {
FormControl: {}
FormGroup: {FormGroup: {FormControl..., FormControl...}}
FormArray: [FormGroup {...}, FormGroup{...}]
...
}现在,我想将一个自定义的FormControl / Property添加到大主窗体的所有子表中。在我的例子中,这就像"Read-Only: true“。
一种解决方案是将HTML中的所有子元素(表单)赋予父表单为@Input,因此我必须只向父窗体添加一个属性。但也许有一种更顺利的方式来做到这一点,我无法想象。
非常感谢您的建议或任何解决方案。
发布于 2020-11-19 16:15:43
FormGroup可以在控件(它们是对象)上迭代,但您可以使用Object.key--您可以使用递归函数。
setEnabled(formGroup,value)
{
Object.keys(formGroup.controls).forEach(x=>{
const gr=formGroup.get(x)
if (gr.controls) //if has controls is a formGroup (or a FormArray)
this.setEnabled(gr,value)
else
{
console.log(gr.value) //<--show the value
if (value)
gr.enable()
else
gr.disable();
}
})
}https://stackoverflow.com/questions/64912140
复制相似问题