每株植物都有植物名称。我正试图从选项选择中取回整个对象。
onChange(newValue){
console.log(newValue)
this.selectedPlant = newValue
}
<select
*ngIf="plants"
class="form-control"
style="width:auto;"
#sel
[(ngModel)]="selectedPlant"
(ngModelChange)="onChange($event)"
>
<option
*ngFor="#plant of plants"
[value]="plant.plantid"
>{{plant.plantname}}</option>
</select>
如果我设置[value] = "plant", I get "[Object, Object]"
。我打算写一个服务从另一个获得一个值,但我觉得应该有一个更清洁的方法来做到这一点。
答案 0 :(得分:3)
如果您想将对象用作值而不是普通字符串,则必须使用[ngValue]
而不是[value]
:
<select
*ngIf="plants"
class="form-control"
style="width:auto;"
#sel
[(ngModel)]="selectedPlant"
(ngModelChange)="onChange($event)">
<option
*ngFor="let plant of plants"
[ngValue]="plant">{{plant.plantname}}
</option>
</select>
答案 1 :(得分:1)
如果你想要整个工厂对象,而不需要改变很多代码,你可以这样做 -
onChange(plantid){
console.log(plantid)
this.selectedPlant = this.plants.filter((plant)=>{ return plant.plantid=== plantid;});
}
在你的HTML中 -
<select *ngIf="plants" class="form-control" style="width:auto;" #sel (ngModel)]="selectedPlant" (ngModelChange)="onChange($event.target.value)">
<option *ngFor="#plant of plants" [value]="plant.plantid">{{plant.plantname}}</option>
希望有所帮助。