Угловой 6 нг-выберите пустое значение при обновлении элементов - PullRequest
0 голосов
/ 30 октября 2018

Я использую ng-select для своего приложения Angular 6, и у меня проблема с обновлением модели [items].

У меня динамически добавляются входы, где я использую ng-select. Опции Ng-select являются элементами словаря. Но я не могу повторить выбранные значения. Поэтому, когда я добавляю новый продукт, я обновляю опции ng-select ([items]). Но когда я это делаю, значения, добавленные ранее, случайным образом очищаются. Много раз все очищается (но значения все еще находятся в модели формы).

Вот мой нг-выбор:

<ng-select formControlName="productCode"
       [items]="avalaibleProductsDict"
       [selectOnTab]="true"
       bindLabel="name"
       bindValue="code"
       labelForId="productCode"
       (ngModelChange)="onSelect(i, product.code)"
       (focus)="setAvailableProductsDict(item.productType)"
       placeholder="Type a product"
       [required]="true">

и здесь функция обновления доступных продуктов:

  public setAvailableProductsDict(editingItem: ProductItemType): void {
let choosedProducts;

if (this.products && this.products.items) {
// map choosed products
  choosedProducts = this.products.items
    .map(
      item => {
        return {
          code: item.productType.code
        }
      });
} else {
  choosedProducts = [];
}


const availableProducts = _.differenceBy(this.productsDictionary, choosedProducts, 'code');
availableProducts.unshift(editingItem);
this.avalaibleProductsDict = _.tail(availableProducts);

}

Мой вопрос: что я делаю не так? Как правильно обновить доступные элементы словаря, чтобы избежать появления пустых значений?

UPDATE: Когда у меня нет изменений в модели элементов (здесь мой словарь), все в порядке, но когда я обновляю словарь, входные данные очищаются случайным образом. Я пробовал фильтр, но он также не работает. В документации я обнаружил, что «компонент Ng-select реализует обнаружение изменений OnPush, что означает« грязную »проверку неизменяемых типов данных». Кроме того, я нашел typeaheaf и searchFn в документации. Но я не знаю, как это использовать ..

...