首页 > 解决方案 > 有什么方法可以知道在primeng multiselect中何时移除芯片?

问题描述

我正在使用这个带有芯片的https://primefaces.org/primeng/showcase/#/multiselect我的字段连接到反应式表单字段,当我使用复选框从选择中选择和取消选择项目时,它可以工作,但是当我关闭下拉菜单时删除筹码,更改不会反映到动态表单中。我想知道是否有任何事件可以跟踪芯片何时被移除并带有 X,所以我可以将更新的值修补到表单中?

标签: angularprimeng

解决方案


这是一个错误,这是removeChip()功能

removeChip(chip: any) {
    this.value = this.value.filter(val => !ObjectUtils.equals(val, chip, this.dataKey));
    this.updateFilledState();
}

whereonModelChange()没有用新值调用。

作为一种解决方法(在 PrimeNG 团队修复它之前),您可以手动调用它。首先参考您的多选:

@ViewChild(MultiSelect) ms: MultiSelect;

然后在钩子中扩展removeChip()函数:ngAfterViewInit

ngAfterViewInit() {
  const originalRemoveChip = this.ms.removeChip;
  this.ms.removeChip = (...args) => {
    originalRemoveChip.apply(this.ms, args);
    this.ms.onModelChange(this.ms.value);
  };
}

这里正在工作STACKBLITZ


推荐阅读