如何设置嵌套 formBuilder 组的值
Posted
技术标签:
【中文标题】如何设置嵌套 formBuilder 组的值【英文标题】:How do I set the value of a nested formBuilder group 【发布时间】:2017-11-17 08:57:25 【问题描述】:我的嵌套表单目前是这样格式化的:
ngOnInit()
this.user = this.fb.group(
name: ['', [Validators.required, Validators.minLength(2)]],
quest1: ['', Validators.required],
account: this.fb.group(
email: ['', Validators.required],
confirm: ['', Validators.required]
),
questions: this.fb.group(
quest2: ['', Validators.required],
),
);
我通常会这样设置值:
this.user.controls['quest1'].setValue('false');
但是因为 formGroups 是嵌套的,所以我不确定如何设置嵌套值。
如何设置“quest2”的值?在嵌套的 formGroup 中设置表单控件值的正确语法是什么?
【问题讨论】:
【参考方案1】:您可以使用以下语法:
this.user.get('questions.quest2').setValue(false);
请注意,如果缺少某些控件,setValue
method 会引发 error。所以,如果不想更新所有控件,可以使用patchValue
:
this.user.get('questions.quest2').patchValue(false);
或
this.user.get(['questions', 'quest2']).patchValue(false);
或
this.user.patchValue(questions: quest2: false);
【讨论】:
非常感谢伙计!它在这里工作。我这样使用它: This.user.patchValue (questions: quest2: 'false'); this.user.get(['questions','quest2']).patchValue(false);也将工作。灵感来自***.com/questions/40934763/…。角 5+ @r0b3rt0 是的,get
方法非常灵活:)
它对我不起作用,它用值替换了表单组。以上是关于如何设置嵌套 formBuilder 组的值的主要内容,如果未能解决你的问题,请参考以下文章
角度 4 将包含其他对象的对象传递给 FormBuilder.group 函数会导致奇怪的表单行为