【问题标题】:value not rendering in textarea using patchValue值未使用 patchValue 在 textarea 中呈现
【发布时间】:2018-01-30 14:23:42
【问题描述】:

我正在尝试在选择框更改时将动态值呈现到 textarea。但我无法在 textarea 中渲染,但 form.value 中的值会发生变化。 我试图在更改选择框时动态地为 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');

}

【问题讨论】:

  • 您能发布一下您是如何实现这些表单的吗?你在使用 formBuilder 吗?
  • 是的,我已经附上了代码,它在选择框更改事件时不呈现日期

标签: angular typescript


【解决方案1】:

你需要使用controls而不是value,所以是这样的:

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

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      相关资源
      最近更新 更多