primeNG 多选更改不会在芯片移除时触发

问题描述 投票:0回答:3

下面是我的代码示例。 primeng 多重选择是 primeng 下拉列表的来源:

HTML:

<p-multiSelect [options]="elements" [(ngModel)]="selectedElements" optionLabel="name" display="chip"
  (onChange)="onElementChange($event)"></p-multiSelect
  
<p-dropdown [options]="availableElements" [(ngModel)]="selectedElement" optionLabel="elementID"
      placeholder="Select an Element"></p-dropdown>

ts:

onElementChange(event) {
  this.availableElements = [];
  this.availableElements = event.value;
}

从多选下拉列表中选择元素完全有效,但是当我从多选芯片中删除元素时,不会触发 onChange 事件:

enter image description here

如何触发onChange?这是一个不受支持的事件吗? 预先感谢。

angular typescript primeng multi-select
3个回答
2
投票

这被认为是组件的一个错误,因为当你删除它时,内部状态已经更新...所以暂时你需要通过使用 onClick 事件和模板变量来获取组件值来更新状态。

<p-multiSelect [options]="cities" 
        [(ngModel)]="selectedCities2" 
        defaultLabel="Select a City" optionLabel="name"
        display="chip" 
        (onClick)="selectedCities2 = elm.value" 
        #elm>
</p-multiSelect>


{{selectedCities2| json}}

stackblitz 演示


0
投票

自12.2.2 primeng版本以来已修复错误


0
投票

您可以调用 p-multiSelect 的 onChange() 事件,例如:

<p-multiSelect [options]="cities" 
        [(ngModel)]="selectedCities2" 
        defaultLabel="Select a City" optionLabel="name"
        display="chip" 
        (onChange)="selectedCities2 = elm.value" 
        #elm>
</p-multiSelect>
© www.soinside.com 2019 - 2024. All rights reserved.