使用patchValue不在textarea中呈现的值

时间:2018-01-30 05:33:31

标签: angular typescript

我正在尝试在selectbox更改时将动态值渲染到textarea。但我无法在textarea中呈现,但值的形式发生了变化。值。 我在更改selectbox时尝试动态地为textarea赋值,但textarea值没有变化。当我用{{myForm.value |检查'时,表单值正在改变JSON}}。下面是我在app.component.ts文件中使用补丁值更新textarea值的源代码。 this.myForm.value.users[0].patchValue({street: 'mtmmm'}); 我尝试但没有工作任何身体帮助,而选择选择框特定阵列对象我正在尝试将街道分配给textarea它不起作用。 以下是我的源代码网址 CODE URL

以下是我的表单构建器代码:

constructor(private fb: FormBuilder) { 
this.myForm = this.fb.group({
users: this.fb.array([])
})
let dataArr = new FormArray([]);
dataArr.push(new FormGroup({
'company': new FormControl(this.users[0].data[0].company),
'address': new FormControl(this.users[0].data[0].address)
}));
let formArr = <FormArray>this.myForm.controls.users;
formArr.push(fb.group({
firstname: this.users[0].firstname,
lastname: this.users[0].lastname,
street: this.users[0].street,
data: dataArr
}));
}
以下是选择框更改事件,我有基于所选值的过滤数据,在获取数组对象后我尝试分配textareat,但它没有渲染。

selectarch(cat){
this.test=this.users.filter(data =>data.firstname === cat.target.value);

this.myForm.value.users[0].street=this.test[0].street;
this.myForm.value.users[0].firstname=this.test[0].firstname;
this.myForm.value.users[0].lastname=this.test[0].lastname;

var test = this.myForm.get('users[0].street');
test.setValue('mtmmm');

}

2 个答案:

答案 0 :(得分:2)

你需要使用controls代替value,所以像这样:

// to avoid error of controls doesn't exist on abstractcontrol:
let arr = <FormArray>this.myForm.controls.users;
arr.controls[0].patchValue({...})

答案 1 :(得分:0)

试试这个:

var test = this.myForm.get('users[0].street');
test.setValue('mtmmm');