Angular patchValue не работает внутри цикла.Зачем? - PullRequest
1 голос
/ 10 мая 2019

Чтобы установить значения, которые я получаю с сервера, в форму пользователя, я использую метод 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] });
    })

И я не знаю, почему это происходит. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 10 мая 2019

Просто измените значение с { item: userData[item] } на { [item]: userData[item] }, чтобы использовать вычисляемые имена свойств: -

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);
1 голос
/ 10 мая 2019

Поскольку item не разрешается в переменную итератора, а обрабатывается как простой ключ в конструкции объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...