【发布时间】:2020-01-29 14:58:11
【问题描述】:
我在以我的角度形式检索多选控件的选定值时遇到问题。基本上我得到的是数组位置而不是实际的 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 等等。
我做错了什么?
【问题讨论】:
-
你能把 [value] 改成 [ngValue] 并检查一下吗?
-
将其更改为 ngValue 会导致错误,因为它不是 mat-option 上的有效属性
-
如果您在下拉列表中选择随机项目,例如第 1 项和第 3 项。输出是什么?
-
完全一样(即我得到的是数组位置而不是值)例如 0:2 1:4 2:6
-
是的,这是因为 map-options 以数组格式返回输出,索引从 0 开始。但是您选择的元素的 ID 是正确的。
标签: angular angular7 angular-formbuilder