如何设置嵌套 formBuilder 组的值

How do I set the value of a nested formBuilder group

我的嵌套表单目前的格式是这样的:

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 中设置表单控件值的正确语法是什么?

您可以使用以下语法进行操作:

this.user.get('questions.quest2').setValue(false);

请注意,如果缺少某些控件,setValue 方法 会抛出一个 错误 。所以,如果你不想更新所有的控件,你可以使用 patchValue:

this.user.get('questions.quest2').patchValue(false);

this.user.get(['questions', 'quest2']).patchValue(false);

this.user.patchValue({questions: {quest2: false}});