Angular Как добавить / удалить из массива FormGroups - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть список ответов под сообщением, использующим * ngFor.Это устанавливается с использованием массива formGroups.Ответы могут быть обновлены, созданы или удалены пользователем.Когда я редактирую ответ, я получаю ответ от API и использую следующий код для обновления массива.

//This is a simplified response from the API
updatedReply = {
  "id": "dajlajg",
  "content": "test"
}

//Find the existing entry and remove it from the existing reply list
this.replyBuilder = this.replyFeedbackForm.value.replies.filter(reply => reply.id !== replyId)

//Add the updated reply back into the list of existing replies
this.replyBuilder = this.replyBuilder.concat(updatedReply)

//Update the value and the view
this.repliesControl.patchValue(this.replyBuilder)

После выполнения кода, аналогичного приведенному выше, обновленное содержимое ответа будет отображаться в представлениинемедленно.Нет проблем.

При добавлении и удалении ответов я выполняю аналогичный процесс для каждого, но patchValue не заканчивается схожим результатом.Когда добавляется ответ, patchValue вообще не вызывает обновления представления.При удалении ответа patchValue перезаписывает удаленный ответ последним в списке ответов.

//Add Reply
newPost = {
  "id": "dahljal",
  "content": "test reply"
}
//When I test this line, I can see it does add the new reply with all the old replies
this.replyBuilder = this.replyFeedbackForm.value.replies.concat(newPost)

this.repliesControl.patchValue(this.replyBuilder)


//Delete Reply
 this.replyBuilder = this.replyFeedbackForm.value.replies.filter(reply => reply.id !== replyId)
this.repliesControl.patchValue(this.replyBuilder)

Может ли кто-нибудь помочь мне понять, что мне следует делать, чтобы обновить представление после добавления и удаления ответов, когдаиспользуя массив formGroups?

...