1

我正在为我的 Angular 6 应用程序使用 ng-select,但我在更新 [items] 模型时遇到了问题。

我有动态添加输入,我正在使用 ng-select。Ng-selects 选项是字典项。但我不能重复选择的值。所以,当我添加新产品时,我会更新 ng-select 选项([items])。但是当我这样做时,之前添加的值会在视图中随机清除。很多时候都在清除(但值仍在表单模型中)。

这是我的 ng 选择:

<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。但是不知道怎么用。。

4

0 回答 0