如何设置嵌套 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 组的值的主要内容,如果未能解决你的问题,请参考以下文章

Python 避免字典和元组的多重嵌套

如何修补嵌套表单数组?

角度 4 将包含其他对象的对象传递给 FormBuilder.group 函数会导致奇怪的表单行为

如何/啥是嵌套函数中声明为非本地设置的变量的值?

没有 Bootstrap 库的 Angular Formbuilder Select 和 Dropdown

具有 n 个自动完成输入的 Angular 嵌套表单