Как получить значения для мультиселекции в угловых выражениях? - PullRequest
0 голосов
/ 30 сентября 2019

У меня проблема с получением выбранного значения элемента множественного выбора в моей угловой форме. В основном я получаю позицию массива, а не фактическое значение идентификатора.

Вот мой контроль

<mat-option *ngFor="let asset of (assetList | async)" [value]="asset.assetId">{{asset.assetName}}</mat-option>

И инициализация формы

profileForm=this.fb.group({
    assets:[],
    capacity:[],
  });

Вот мой код для получения значения

for(var asset in this.profileForm.controls["assets"].value){
      let assetItem=new Asset();
      assetItem.AssetId=Number(asset);
      assetList.push(assetItem);
    }

Здесьзначения в форме (из консоли Chrome), когда я делаю console.log (this.profileForm.controls ["assets"]. value)

> value: Array(3) 
0: 1 
1: 2 
2: 3 
length: 3

Так что в основном я получаю значение 0 вместо1 и 1 вместо 2 и т. д.

Что я делаю не так?

1 Ответ

0 голосов
/ 30 сентября 2019

Хорошо, я обнаружил, что я делаю неправильно ...

Если я изменю

for(var asset in this.profileForm.controls["assets"].value){
      let assetItem=new Asset();
      assetItem.AssetId=Number(asset);
      assetList.push(assetItem);
    }

на

for(var asset of this.profileForm.controls["assets"].value){
      let assetItem=new Asset();
      assetItem.AssetId=Number(asset);
      assetList.push(assetItem);
    }

Он получит правильные значения. В основном For ... in возвращает ключи для итерируемого объекта, а For ... of возвращает значения итерируемого объекта.

...