有什么方法可以知道何时在 primeng 多选中移除芯片?
Is there any way to know when chip is removed in primeng multiselect?
我用这个 https://primefaces.org/primeng/showcase/#/multiselect 搭配芯片
我的字段连接到一个反应式表单字段,当我 select 和 deselect 带有复选框的 select 项目时,它可以工作,但是当我在关闭下拉列表时删除筹码时,变化是没有反映到动态形式。我想知道是否有任何事件可以跟踪芯片何时移除带有 X 的芯片,以便我可以将更新后的值修补到表单中?
是a bug, here is removeChip()
function:
removeChip(chip: any) {
this.value = this.value.filter(val => !ObjectUtils.equals(val, chip, this.dataKey));
this.updateFilledState();
}
其中 onModelChange()
未使用新值调用。
作为解决方法(在 PrimeNG 团队修复它之前),您可以手动调用它。
首先参考你的 multi select:
@ViewChild(MultiSelect) ms: MultiSelect;
然后在 ngAfterViewInit
钩子中扩展 removeChip()
函数:
ngAfterViewInit() {
const originalRemoveChip = this.ms.removeChip;
this.ms.removeChip = (...args) => {
originalRemoveChip.apply(this.ms, args);
this.ms.onModelChange(this.ms.value);
};
}
这里正在工作STACKBLITZ
我用这个 https://primefaces.org/primeng/showcase/#/multiselect 搭配芯片 我的字段连接到一个反应式表单字段,当我 select 和 deselect 带有复选框的 select 项目时,它可以工作,但是当我在关闭下拉列表时删除筹码时,变化是没有反映到动态形式。我想知道是否有任何事件可以跟踪芯片何时移除带有 X 的芯片,以便我可以将更新后的值修补到表单中?
是a bug, here is removeChip()
function:
removeChip(chip: any) {
this.value = this.value.filter(val => !ObjectUtils.equals(val, chip, this.dataKey));
this.updateFilledState();
}
其中 onModelChange()
未使用新值调用。
作为解决方法(在 PrimeNG 团队修复它之前),您可以手动调用它。 首先参考你的 multi select:
@ViewChild(MultiSelect) ms: MultiSelect;
然后在 ngAfterViewInit
钩子中扩展 removeChip()
函数:
ngAfterViewInit() {
const originalRemoveChip = this.ms.removeChip;
this.ms.removeChip = (...args) => {
originalRemoveChip.apply(this.ms, args);
this.ms.onModelChange(this.ms.value);
};
}
这里正在工作STACKBLITZ