Angular 如何检索角度foms中的multiselect的值?

Angular 如何检索角度foms中的multiselect的值?,angular,angular7,angular-formbuilder,Angular,Angular7,Angular Formbuilder,检索角度窗体中的多选控件的选定值时出现问题。基本上,我得到的是数组位置,而不是实际的id值 这是我的控制 <mat-option *ngFor="let asset of (assetList | async)" [value]="asset.assetId">{{asset.assetName}}</mat-option> 下面是我检索该值的代码 for(var asset in this.profileForm.controls["assets"].value){

检索角度窗体中的多选控件的选定值时出现问题。基本上,我得到的是数组位置,而不是实际的id值

这是我的控制

<mat-option *ngFor="let asset of (assetList | async)" [value]="asset.assetId">{{asset.assetName}}</mat-option>
下面是我检索该值的代码

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控制台)

基本上我得到的是0而不是1,1而不是2,等等


我做错了什么?

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

如果我改变

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


它得到正确的值。基本上,For…in返回被迭代对象的键,而For…of返回被迭代对象的值。

您可以将[value]更改为[ngValue]并进行检查吗?将其更改为ngValue会导致错误,因为它不是mat选项上的有效属性。如果在下拉列表中选择随机项,例如第1项和第3项。输出是什么?完全相同(即我得到的是数组位置而不是值)例如0:2 1:4 2:6是的,这是因为映射选项以数组格式返回输出,索引从0开始。但是您选择的元素的ID是正确的。
> value: Array(3) 
0: 1 
1: 2 
2: 3 
length: 3
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);
    }