angular - 有什么方法可以知道在primeng multiselect中何时移除芯片?
问题描述
我正在使用这个带有芯片的https://primefaces.org/primeng/showcase/#/multiselect我的字段连接到反应式表单字段,当我使用复选框从选择中选择和取消选择项目时,它可以工作,但是当我关闭下拉菜单时删除筹码,更改不会反映到动态表单中。我想知道是否有任何事件可以跟踪芯片何时被移除并带有 X,所以我可以将更新的值修补到表单中?
解决方案
这是一个错误,这是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
推荐阅读
- flutter - 如何在颤动中更改按钮上的文本
- rust - 如何存储可以转换为可以多次使用的迭代器的迭代器或对象的异构列表?
- java - 在不修改原代码的情况下,用Maven替换JAVA代码中的常量
- javascript - 如何使用子进程从父目录运行 .class 文件?
- jenkins - 无法在 Jenkins 管道的后台启动 Jmeter-Server。获取 ConnectException
- python - 为什么它说“ValueError:函数返回的数组在调用之间改变了大小”?
- php - Laravel HasManyThrough 返回属性 [X] 在此集合实例上不存在
- c++ - 是 clang-11 的调用
通过 -fcoroutines 标志标头? - haskell - Haskell,将泛型与 Char 进行比较
- javascript - 如何处理promise.all拒绝三个promise中的一个promise?