Определить массив для хранения второго вызова API selectedData=[];
. На самом деле я сделал маленький трюк. Так как мы не можем различить теги <select>
и <option>
, нажмите кнопку. Я использовал переменную open
, чтобы узнать, открыт ли раскрывающийся список или нет.
<select (blur)="closeSelect()" (click)="jsFunction(i);">
<option value="" disabled selected>Select your option</option>
<option [value]="currentData.type" *ngFor="let currentData of selectedData[i]">{{currentData.type}}</option>
</select>
, если она открыта и нажата, мы можем добавить ее в массив с соответствующим индексом.
jsFunction(i){
// telling open = false / true
this.open=!this.open;
// called second api;
let data=[
{number: "1",
type: "customer"},
{number: "2",
type: "dealer"},
{number: "3",
type: "client"},
{number: "4",
type: "master"},
]
if(this.open)
this.selectedData[i]=data;
}
Когда вы нажимаете на значение или за пределами (blur)
, мы делаем open = false
.
closeSelect(){
this.open=false
}
Поскольку другие ответы не работают, это может решить вашу проблему. Я также искал, но не повезло,Я постараюсь оптимизировать его.
Рабочий Stackblitz