如何设置嵌套的formBuilder组的值

时间:2017-06-15 02:56:05

标签: forms angular typescript angular2-forms angular-reactive-forms

我的嵌套表单目前以这种方式格式化:

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.patchValue({ questions: {quest2: 'false'}});

1 个答案:

答案 0 :(得分:6)

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

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

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

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

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