0

我在以我的角度形式检索多选控件的选定值时遇到问题。基本上我得到的是数组位置而不是实际的 id 值。

这是我的控制

<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);
    }

这是我执行 console.log(this.profileForm.controls["assets"].value) 时表单中的值(来自 chrome 控制台)

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

所以基本上我得到的值是 0 而不是 1 和 1 而不是 2 等等。

我究竟做错了什么?

4

1 回答 1

0

好吧,我发现我做错了什么......

如果我改变

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 返回被迭代对象的值。

于 2019-09-30T12:18:07.863 回答