Angular patchValue 在循环内不起作用。为什么?
Angular patchValue does not work inside a loop. Why?
要设置我从服务器到用户表单的值,我使用 pathValue
方法,但如果我逐行执行此操作,则工作:
this.userDataForm.patchValue({ 'first_name': userData['first_name'] });
this.userDataForm.patchValue({ 'last_name': userData['last_name'] });
this.userDataForm.patchValue({ 'address': userData['address'] });
this.userDataForm.patchValue({ 'city': userData['city'] });
this.userDataForm.patchValue({ 'province': userData['province'] });
this.userDataForm.patchValue({ 'postal_code': userData['postal_code'] });
this.userDataForm.patchValue({ 'phone': userData['phone'] });
this.userDataForm.patchValue({ 'birthdate': userData['birthdate'] });
this.userDataForm.patchValue({ 'card_id': userData['card_id'] });
this.userDataForm.patchValue({ 'email': userData['email'] });
但如果我在 forEach
中执行此操作,则它不起作用。 userDataForm
是一个 FormGroup
var:
var items = ['first_name', 'last_name', 'address', 'city', 'province',
'postal_code', 'phone', 'birthdate', 'card_id', 'email']
items.forEach(item => {
this.userDataForm.patchValue({ item: userData[item] });
})
而且我不知道为什么会这样。有什么想法吗?
只需将 { item: userData[item] }
更改为 { [item]: userData[item] }
即可使用 Computed 属性 Names:
var items = ['first_name', 'last_name', 'address', 'city', 'province', 'postal_code', 'phone', 'birthdate', 'card_id', 'email']
items.forEach(item => {
this.userDataForm.patchValue({ [item]: userData[item] });
})
要了解有关计算 属性 名称的更多信息:-
虽然不需要遍历对象的 属性 来修补表单中的值,但您可以直接将整个对象修补到表单中:-
this.userDataForm.patchValue(userData);
因为 item
没有解析为迭代器变量,但在对象构造中作为普通键受到威胁。
要设置我从服务器到用户表单的值,我使用 pathValue
方法,但如果我逐行执行此操作,则工作:
this.userDataForm.patchValue({ 'first_name': userData['first_name'] });
this.userDataForm.patchValue({ 'last_name': userData['last_name'] });
this.userDataForm.patchValue({ 'address': userData['address'] });
this.userDataForm.patchValue({ 'city': userData['city'] });
this.userDataForm.patchValue({ 'province': userData['province'] });
this.userDataForm.patchValue({ 'postal_code': userData['postal_code'] });
this.userDataForm.patchValue({ 'phone': userData['phone'] });
this.userDataForm.patchValue({ 'birthdate': userData['birthdate'] });
this.userDataForm.patchValue({ 'card_id': userData['card_id'] });
this.userDataForm.patchValue({ 'email': userData['email'] });
但如果我在 forEach
中执行此操作,则它不起作用。 userDataForm
是一个 FormGroup
var:
var items = ['first_name', 'last_name', 'address', 'city', 'province',
'postal_code', 'phone', 'birthdate', 'card_id', 'email']
items.forEach(item => {
this.userDataForm.patchValue({ item: userData[item] });
})
而且我不知道为什么会这样。有什么想法吗?
只需将 { item: userData[item] }
更改为 { [item]: userData[item] }
即可使用 Computed 属性 Names:
var items = ['first_name', 'last_name', 'address', 'city', 'province', 'postal_code', 'phone', 'birthdate', 'card_id', 'email']
items.forEach(item => {
this.userDataForm.patchValue({ [item]: userData[item] });
})
要了解有关计算 属性 名称的更多信息:-
虽然不需要遍历对象的 属性 来修补表单中的值,但您可以直接将整个对象修补到表单中:-
this.userDataForm.patchValue(userData);
因为 item
没有解析为迭代器变量,但在对象构造中作为普通键受到威胁。