在 *ngFor 中获取下拉列表的完整项目 [重复]

Posted

技术标签:

【中文标题】在 *ngFor 中获取下拉列表的完整项目 [重复]【英文标题】:Get full item of a dropdown in a *ngFor [duplicate] 【发布时间】:2019-06-26 12:04:18 【问题描述】:

我想获取我当前在下拉列表中选择的元素的完整对象。目前我得到了选定的值,这对我来说很好!但另外我想获得完整的对象。我该怎么做?

<select  [(ngModel)]="user" (change)="fn_consolidadoUsuario()"  mdbInput    > 
    <option *ngFor="let item of aUser" [value]="item.iduser">item.name 
    </option>

user:any
aUser:
[

    "iduser":1, "name":"joe"
,

    "iduser":1, "name":"berta"
,

    "iduser":1, "name":"francisco"

]


this.user=1; //value by default

fn_consolidadoUsuario()
 console.log(this.user)// 1
 //also I need the actual item    "iduser":1, "name":"joe"

【问题讨论】:

【参考方案1】:

做事

fn_consolidadoUsuario()
  const mySelectedUser = this.aUser.find(cursor => cursor.iduser === this.user);

【讨论】:

这可能会解决 OP 的问题,但如果它也解释了 为什么 它解决了 OP 的问题会更有帮助。有效的代码远不如您理解的有效的代码有用:)【参考方案2】:

为此使用[ngValue]="item"[compareWith]="compareData"

Stackblitz Demo

component.ts

user:any="iduser":2,"name":"berta" 

aUser=[
    "iduser":1, "name":"joe",
    "iduser":2, "name":"berta",
    "iduser":3, "name":"francisco"
]

fn_consolidadoUsuario()
    console.log(this.user)


compareData(a, b) 
    return a && b && a.iduser == b.iduser;

component.html

<select  [(ngModel)]="user" (change)="fn_consolidadoUsuario()"  mdbInput  [compareWith]="compareData"  > 
    <option *ngFor="let item of aUser" [ngValue]="item">item.name 
    </option>
</select>

<pre>user | json</pre>

【讨论】:

以上是关于在 *ngFor 中获取下拉列表的完整项目 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据对象属性字符串过滤“ngFor”循环内的项目

如何在下拉列表中添加搜索栏?

如何在Angular 7中单击按钮时获取下拉列表的选定选项[重复]

带有 ngSwitch 的条件按钮也带有来自异步管道数组的 ngFor

使用jQuery从下拉列表(选择框)中获取选定的ID [重复]

使用Javascript获取下拉列表中选择的值(显示空)[重复]