我正在尝试使用primeng multiselect组件。我想在用户解除多选下拉列表后立即获取所有选定的值。有办法吗?我知道我们有onChange()事件,但每当用户从列表中选择或取消选择一个值时它就会触发。我想在用户选择值时触发它。
答案 0 :(得分:3)
由于primeng没有提供任何直接达到你需要的api,这是我能够做到的一种方式。
your.component.html
<p-multiSelect #ms [options]="cars" [(ngModel)]="selectedCars"></p-multiSelect>
your.component.ts
import { Renderer} from '@angular/core';
import {MultiSelect} from 'primeng/primeng';
@ViewChild('ms') multiselect: MultiSelect;
constructor(private renderer :Renderer) {}
ngOnInit(){
this.renderer.listenGlobal('document', 'click', ()=> {
if (!this.multiselect.selfClick && !this.multiselect.panelClick && this.multiselect.overlayVisible) {
console.log('multiselect will hide'); // write code here to execute when multiselect overlay get dismissed/hidden
// this.selectedCars will have all the selected values.
}
});
}
当用户点击多重选择本身以外的任何地方时,Primeng使用相同的逻辑来关闭多选叠加。 如果将来primeng提供了实现预期结果的直接方法,您可能不需要使用此工作。