Как исправить пустой массив - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь выбрать клиентов (идентификатор, имя), но у меня есть пустой массив.

Я использую этот код для получения моих клиентов, чтобы заполнить мой NG-DROPDOWN идентификатором клиента и именем клиента.Сейчас я получаю пустой массив.

this.clientService.getClients().subscribe((response: any) => {
    for (let data of response) {
      this.clientDropdownList.push({ '_id': response._id, 'name': response.name }) 
    }
    console.log(this.dropdownList)
    }, error => {console.log("error :", error); }
);

Служба:

getClients(): Observable<Client[]> {
    return this.HttpClient.get<Client[]>('/api/clients');
}

HTML:

<ng-multiselect-dropdown class="customDropdown" 
    formControlName="client"
    [placeholder]="'Select Client'"
    [data]="[clientDropdownList]"
    [(ngModel)]="selectedItems"
    [settings]="dropdownSettings"
    (onSelect)="onItemSelect($event)"
    (onSelectAll)="onSelectAll($event)">
</ng-multiselect-dropdown>

Я ожидаю ответа с идентификатором клиента и клиентомимя в clientDropdownList

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вы должны удалить [data] привязку и привязать clientDropdownList к вашему раскрывающемуся списку.Как это:

<ng-multiselect-dropdown class="customDropdown" 
    formControlName="client"
    [placeholder]="'Select Client'"
    [(ngModel)]="clientDropdownList"
    [settings]="dropdownSettings"
    (onSelect)="onItemSelect($event)"
    (onSelectAll)="onSelectAll($event)">
</ng-multiselect-dropdown>
0 голосов
/ 15 февраля 2019
  1. В вашем шаблоне у вас есть оба [data]="[clientDropDownList]".Для data необходимо связать значение без скобок.
  2. Ваш цикл for... of в порядке, но назначение неверное, вы устанавливаете значения массива, а не элемент в массиве.

Код шаблона:

<ng-multiselect-dropdown class="customDropdown" 
    formControlName="client"
    [placeholder]="'Select Client'"
    [data]="clientDropdownList" <!-- removed square brackets around the value -->
    [(ngModel)]="selectedItems" <!-- where is this coming from -->
    [settings]="dropdownSettings"
    (onSelect)="onItemSelect($event)"
    (onSelectAll)="onSelectAll($event)">
</ng-multiselect-dropdown>

Код компонента

this.clientService.getClients().subscribe((response: any) => {
      for (let data of response) {
        // assign data. instead of response.
        this.clientDropdownList.push({ '_id': data._id, 'name': data.name });

        // or this seeing as the field names are identical
        // this.clientDropdownList.push(data); 
        // you might even make a direct assignment but I am not sure if you are building the array from multiple sources
      }
      console.log(this.dropdownList);
    }, error => console.log("error :", error)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...