TypeError: value.forEach не является функцией TypeError: value.forEach не является функцией в FormArray.patchValue - PullRequest
1 голос
/ 06 мая 2020

Я получаю эту ошибку:

ERROR Error: Uncaught (in promise): TypeError: value.forEach is not a function
TypeError: value.forEach is not a function
    at FormArray.patchValue.

Я получаю данные из Laravel и хочу, чтобы эти данные отображались в FormArray.

Мой код выглядит так:

this.http.get("http://data_dink" + '/' + event.value)
 .toPromise().then(data => 
 {
    console.log(data);
    this.getSelectedServiceData = data;
    console.log(this.getSelectedServiceData.service);
    this.addForm.get('services').patchValue(this.getSelectedServiceData.service);
 });

data переменная (ответ на запрос получения) имеет такой объект:

{
   "msg":"Service Information",
   "service":{
      "id":1,
      "name":"Web Development",
      "description":"Test per web development",
      "price":"200.00",
      "created_at":"2020-05-04T03:07:28.000000Z",
      "updated_at":"2020-05-06T03:07:28.000000Z",
      "view_service":{
         "href":"api\/v1\/service\/1",
         "method":"GET"
      }
   }
}

FormArray, построенный из этого объекта:

{
   "msg":"List of all services",
   "services":[
      {
         "id":1,
         "name":"Web Development",
         "description":"Test per web development",
         "price":"200.00",
         "created_at":"2020-05-04T03:07:28.000000Z",
         "updated_at":"2020-05-06T03:07:28.000000Z"
      },
      {
         "id":2,
         "name":"Java",
         "description":"test per java",
         "price":"100.00",
         "created_at":"2020-05-20T03:07:57.000000Z",
         "updated_at":"2020-05-20T03:07:57.000000Z"
      }
   ]
}

1 Ответ

1 голос
/ 06 мая 2020

По руководство для FormArray patchValue он принимает массив в качестве первого аргумента:

patchValue(
  value:        any[], 
  options: { 
    onlySelf?:  boolean; 
    emitEvent?: boolean; 
  } = {}
): void

, а также ошибка сообщает, что он пытается использовать аргумент value в качестве массива, я предполагаю, что аргумент для patchValue должен быть заключен внутрь []

, поэтому решение вашего вопроса должно быть:

this.addForm
      .get('services')
      .patchValue(
        [
          this.getSelectedServiceData.service
        ]
      )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...