Dear Team,
I am using MultiSelectDropdown Control, Where I want to bind data on various events like on scroll or on before popup event, every time data fetched from api. But even I have tried static data but not get the proper result. All these events I have implemented perfectly in Dropdownlist like scroll, beforeopen, on filter.
Some snaps are attached below.
Pl suggest were I doing wrong.
1) popupBeforeOpen function not firing every time we try to open the popup,
2) Data not showing in the popup
3) We need to change the Data every time we click on the dropdown icon on multi-select
---------------------------HTML Code---------------------------
<ejs-multiselect #multiSelect [attr.id]='control.FieldName' showSelectAll='true' autocomplete="off"
[dataSource]='control?.AutoCompleteModel.Data' formControlName="{{control?.FieldName}}"
[fields]='{text:control.AutoCompleteModel.TextColumn, value: control.AutoCompleteModel.ValueColumn}'
cssClass="e-outline" mode='CheckBox' [showDropDownIcon]='true' [itemTemplate]='itemTemplate'
[enabled]="!control?.IsReadOnly" [popupWidth]="control.AutoCompleteModel.Width+'%'"
(beforeOpen)="popupBeforeOpen($event, multiSelect)">
<ng-template #itemTemplate="" let-data="">
data[control.AutoCompleteModel.ValueColumn]
</ng-template>
</ejs-multiselect>
--------------------TS Code--------------------------------------------------
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
styleUrls: ['./test.component.scss']
})
export class TestComponent implements OnInit {
constructor() { }
ngOnInit(): void {
}
control = {
AutoCompleteModel: {
Data: [],
TextColumn: 'FIELD_NAME',
ValueColumn: 'CITY_ID',
Width: 100
},
FieldName: 'CITY',
IsReadonly: false
}
id1 = 1
id2 = 2
actionType = undefined
popupBeforeOpen(args, multiSelect) {
if (this.control.AutoCompleteModel.Data instanceof Array
&& this.actionType == undefined) {
args.cancel = true
this.actionType = 'abc';
this.control.AutoCompleteModel.Data = [
{CITY_ID: this.id1, FIELD_NAME: 'Test' + this.id1},
{CITY_ID: this.id2, FIELD_NAME: 'Test' + this.id2},
]
this.id1 += 2
this.id2 += 2
setTimeout(() => {
this.actionType = undefined
}, 1000);
}
}
}