更新项目时,角度6 ng-选择空值

时间:2018-10-30 00:31:46

标签: typescript angular6 angular-ngselect

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

0 个答案:

没有答案