首页 > 解决方案 > 不能使用 formGroup.controls['xxx'].setValue('someString');

问题描述

不能使用FormGroup.controls['lable'].setValue('some string');

我的 Angular 反应形式有 FormControls 和 FormArray。在方法中,我想在 FormArray 的某个索引处设置值。我可以在特定索引处获取 FormArray 和 FormGroup(b 是代码中某个索引处的 foormGroup)。但是在我无法为该 FormGroup 设置值之后。

表格声明(工作)

this.addUserForm = this.formBuilder.group({
    firstName: ['', Validators.required],
    lastName: ['', Validators.required],
    primaryNode: [{lable: '' , uuid: ''},Validators.required],
    email: ['', Validators.required],
    roleFormArray: this.formBuilder.array([]),
    password: ['', Validators.required],
    repeatPassword: ['', Validators.required]
});

在 FORMARRAY 中添加表格(工作中)

roleFormArray.push(this.formBuilder.group({
      role: ['', Validators.required],
      node: [{lable: '' , uuid: ''}, Validators.required]
    }));
    let a = this.addUserForm.get('roleFormArray');

不工作的代码

在方法

let b = (<FormGroup((<FormArray>this.addUserForm.controls['roleFormArray']).controls[index]));

调试器//直到现在 b 有数据作为 FormGroup

//但是这条线不起作用

b.controls['role'].setValue('somevalue');

我想将值设置为“角色”和“节点”

标签: angulartypescriptangular-reactive-forms

解决方案


因为它是一个formArray,你可以尝试:

  b.controls[index].controls['role'].setValue('somevalue');

或者:

  b.get([index, 'role']).setValue('somevalue');

推荐阅读