Я использую 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 в документации. Но я не знаю, как это использовать ..