我在Angular 6应用中使用ng-select,但在更新[items]模型时遇到问题。
我在使用ng-select的地方动态添加了输入。 Ng-selects选项是字典项。但是我不能重复选择的值。因此,当我添加新产品时,我会更新ng-select选项([items])。但是,当我这样做时,先前添加的值会在视图中随机清除。很多次都清除了(但值仍在表单模型中)。
这是我的ng-select:
<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);
}
我的问题是我做错了什么?如何正确刷新可用的词典项目以避免视图中出现空白值?
更新: 当我没有更改项目模型(这里是我的字典)时,一切都很好,但是当我更新字典时,输入会被随机清除。我尝试了过滤器,但它也无法正常工作。 我在文档中发现“ Ng-select组件实现OnPush更改检测,这意味着对不可变数据类型进行脏检查”。 另外,我在文档中找到了typeaheaf和searchFn。但是我不知道怎么用。