Как вставить значения в наблюдаемый тип массива в ng-select - PullRequest
0 голосов
/ 03 марта 2019

Я использую ng-select и специально использую typeahead для извлечения списка с сервера в качестве пользовательских типов.Следующий пример, как описано в примере typeahead: people3$.Мое требование состоит в том, чтобы добавить значение, когда пользователь нажимает кнопку (у меня есть id и label и соответствующий объект), но я не понимаю:

  1. Как я могу переместить элемент на item : Observable<any[]>Я попытался сделать this.item = concat(of([{label:this.field.display,id:value}])), оно выдвигает значение, но оно не отражает значение в ng-select, пока я не щелкну где-нибудь за пределами элемента.
  2. Я попытался это решение с помощью @ViewChildи на this.ngSelect.items = [{label:this.field.display,id:value}] все еще не отображается значение в ng-select.

error

После добавления значения в группу я добавилобъект, но все равно он не показывает, если я щелкну где-нибудь, скоро будет показано значение.

Я хочу знать

  1. Что может быть причиной такого поведения.
  2. предпочтительный способ вставки элементов в Observable<any[]>

Вот моя конфигурация ng-select:

<ng-select class="form-control ng-select-padding"
                 [items]="referenceItems | async"
                 [hideSelected]="true"
                 [loading]="searchFailed"
                 [typeahead]="searchReferenceItems"
                 bindLabel="label"
                 bindValue="id"
                 (change)="setField($event)"
                 (blur)="onUpdated()"
                 [formControlName]="field.name" ngDefaultControl>
      </ng-select>

//@ TS file

searchReferenceItems =  new Subject<object>();
referenceItems: Observable<any[]> ;

Спасибо за вашу любезную помощь

1 Ответ

0 голосов
/ 03 марта 2019

Наблюдаемое должно быть уведомлено следующей функцией, которую вы можете использовать BehaviorSubject и функцией asObservable () для отображения элементов.

   subject = new BehaviourSubject<any>([]) 
   referenceItems = this.subject.asObservable(); 

Затем, когда вы захотите обновить значение, вы можете использовать«следующая» функция для субъекта.

   this.subject.next(this.subject.value.concat({id:..., label:...}));
...