获取Angular中选择选项的值

Posted

技术标签:

【中文标题】获取Angular中选择选项的值【英文标题】:Get the value of a select option in Angular 【发布时间】:2020-03-23 17:28:56 【问题描述】:

我有这个 user.model.ts,我有一个用户列表,我可以通过单击过滤用户数据并将其放入引导模式的按钮进行编辑,选择标签中的 [ngModel] 我可以获取我的用户的国家,但是当我更改国家并提交表单时,我收到了当前的国家,但没有收到它的 ID,应该注意的是,当我在选项中使用 [value] 时,它不会显示当前的国家,如何我可以得到价值而不是名字吗?谢谢。

在 user.component.ts 中

updateUser(formActualizarTeam) 
  console.log(this.user);


在 user.model.ts 中

export class UserModel
 name: string;
 idCountry: number;

在 user.component.html

<form
  #formUpdate="ngForm"
  (ngSubmit)="updateUser(formUpdate)">

<select
   id="country"
   name="idCountry"
   class="form-control"
   [(ngModel)]="user.idCountry">
   <option *ngFor="let c of countries"> c.name </option>
</select>

</form>

【问题讨论】:

你能显示国家数组吗?,? 【参考方案1】:

您需要将 [value] 绑定到 idCountry ,还需要设置默认值,所选值应与某些选项值匹配:

<select
   id="country"
   name="idCountry"
   class="form-control"
   [(ngModel)]="user.idCountry">
   <option *ngFor="let c of countries" [value]="c?.idCountry"> c?.name </option>
</select>

另外加载默认值有两个选项:

component.ts

ngOnInit()
this.user['idCountry'] =  this.countries[0]['id']; //  set this after country data is loaded

this.user['idCountry'] = '';

component.html

<select
   id="country"
   name="idCountry"
   class="form-control"
   [(ngModel)]="user.idCountry">
   <option value="" [disabled]="true"> Select country</option> // set some placeholder
   <option *ngFor="let c of countries" [value]="c?.idCountry"> c?.name </option>
</select>

【讨论】:

当我在选项中使用 [value] 时,它不会显示当前国家/地区 :( @CarlosMorales 您需要在加载数据时设置当前国家/地区,即:his.user['idCountry'] 对不起,我是新手,您能详细说明一下吗? 嗨,我调试了我的应用程序并在我的用户数组中发现了一个严重错误,因为如果不是字符串,idcountry 没有返回数字,无论如何感谢你,我意识到了这个错误,非常感谢【参考方案2】:

我认为您需要使用[value] 属性来匹配选项以选择ngModel

那么代码将是(如果您在 countries 数组中有 idCountry

<select id="country" name="idCountry" class="form-control [(ngModel)]="user.idCountry">
   <option *ngFor='let c of countries' [value]='c.idCountry'> c.name </option>
</select>

【讨论】:

当我在选项中使用 [value] 或 [ngValue] 时,它不会显示当前国家/地区 :( ["idCountry":1,"name":"Polonia","idCountry":2,"name":"Malasia","idCountry":3,"name ":"Suecia"]...这是一项服务 这应该用上面的代码来完成,否则你的数组数据会不匹配。如果您需要更多帮助,请考虑显示完整的组件代码.. 嘿,你好,我的用户数组中有一个严重错误,因为 idcountry 没有返回一个数字,如果不是一个字符串,无论如何感谢你我意识到这个错误,非常感谢你【参考方案3】:

您可以通过使用(更改)事件来获取选定的值。

在您的 html 中:

<select (change)="onChange($event)"
   id="country"
   name="idCountry"
   class="form-control">
   <option *ngFor="let c of countries"> c.name </option>
</select>

在你的.ts:

onChange(e: any) 
    console.log(e.target.value);

【讨论】:

【参考方案4】:

您必须为您的选项标签设置 [value],如下所示 [value]="c.idCountry"

<form
  #formUpdate="ngForm"
  (ngSubmit)="updateUser(formUpdate)">

<select
   id="country"
   name="idCountry"
   class="form-control"
   [(ngModel)]="user.idCountry">
   <option *ngFor="let c of countries" [value]="c.idCountry"> c.name </option>
</select>

</form>

你会得到价值现在尝试打印它

updateUser(ngform)
    console.log(ngform.form.value)
  

【讨论】:

以上是关于获取Angular中选择选项的值的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2使用选择选项保留选定对象的值[重复]

Angular 4获取选择控件的选定选项的文本

Angular 2 选择选项(下拉菜单) - 如何获取更改值以便可以在函数中使用?

Angular 4 - 在选择列表中使用对象作为选项值

Angular 7从Kendo UI日期选择器获取选定日期的值

选择表单控件在 Angular 7 中返回 [object Object]