если вам нужен другой список, вам нужны разные переменные.Вы можете сделать это, создав массив массивов городов или создав объект с массивом городов.Пример.
Вы должны создать
cities:string[][]=[
[{name:"Alabama"},{name:"Boston"}...],
[{name:"Madrid"},{name:"Barcelona"}..]
....
]
//Or
cities:any={
USA:[{name:"Alabama"},{name:"Boston"}...],
Spain:[{name:"Madrid"},{name:"Barcelona"}..]
}
, тогда цикл, который вы делаете, закончится
<div *ngFor="let city of cities[index]">
or
<div *ngFor="let city of cities[dataForm.get('country').value]>
Обновление
@RandomGuy, у вас есть три разные вещи: ваша форма, ваши данные, которые заполняют форму, и данные о Штатах.Данные состояний указывают данные, которые вы используете для создания опций.
Сначала эти данные будут похожи на
dataStates=[
{stateID:"AL",name="Alaska",cities:[]},
{stateID="CL",name="California",cities:[]}
...all the rest of states...
]
<select formControlName="stateID" (onchange)="getCities($event.target.value)">
<options *ngFor="let item of dataStates" [value]="item.statedID">
{{item.name}}
</option>
</select>
<select formControlName="cityID" >
<!-the options will be dataStates.find(d=>d.stateId==myArray.get('statedID').value)-->
<options *ngFor="let city of dataStates.find(d=>d.stateId==myArray.get('statedID').value).cities" [value]="city.cityID">{{city.name}}
{{city.name}}
</option>
</select>
Функция getCities
//get cities check if cities of the data exist. If not fill the cities
getCities(stateID:string)
{
let index=this.dataStates.findIndex(p=>p.stateID==stateID)
if (index>=0){ //Always must be index>0
if (this.dataStates.cities.length<=0) //is not fill yet
{
this.httpClient.get(url+"/"+stateID).subscribe(res=>{
this.dataStates[index].cities=res;
})
}
}
Таким образом, вы будете искать только города штатов в форме(не все города)