不能使用formGroup.controls ['xxx']。setValue('someString');

时间:2019-08-22 13:41:14

标签: angular typescript angular-reactive-forms

不能使用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');

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

4 个答案:

答案 0 :(得分:1)

由于它是一个formArray,因此您可以尝试:

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

或:

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

答案 1 :(得分:1)

这对我有用

  (((<FormArray>this.addUserForm.controls['roleFormArray']).at(someIndex)) as FormGroup).controls['role'].setValue('somestring');

答案 2 :(得分:0)

就像我在评论中提到的那样,您可以在formarray内指定formgroup的索引并访问该formgroup的formcontrol:

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

答案 3 :(得分:0)

尝试

this.roleFormArray.setValue({
    role: 'value',
    node: 'value',
});