不能使用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');
我想将值设置为“角色”和“节点”
答案 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',
});