如何在角度6的下拉列表中设置双向绑定数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在角度6的下拉列表中设置双向绑定数据?相关的知识,希望对你有一定的参考价值。

我有这样的数据。

[
   {
       "user_id": 1,
       "name": "John"   
   },
   {
       "user_id": 2,
       "name": "Doe"   
   },
   ...
]

在app中,我分别为show only user_id和name设置了两个下拉列表。

对于用户ID,我使用了简单的selectoption

对于name我使用过ngx-select-dropdown

现在我必须进行双向绑定,当我选择Doe然后id下拉2将自动绑定。同样如果我选择id 1然后John将自动选择。

我的设计如下。

enter image description here

答案

要根据上述数据动态生成下拉列表,请创建模型。

用户model.ts

export class UserModel {
    user_id: number;
    name: string; }

在组件中,它看起来像这样

import { UserModel } from '../app/model/user-model';

curr_name: string = '';
curr_user_id: number = null;
users: UserModel[] = 
[
  {
    "user_id": 1,
    "name": "John"
  },
  {
    "user_id": 2,
    "name": "Doe"
}];

getName(id: any): void {
  if (id !== 'SELECT') { // SELECT is used for default here
    this.curr_name = this.users.find(x => x.user_id == id).name;
  }
}

getUserId(name: any): void {
  if (name !== 'SELECT') {
    this.curr_user_id = this.users.find(x => x.name == name).user_id;
  }
}

最后,根据您的设计,html代码基本上就像

<select (change)="getName($event.target.value)">
  <option>SELECT</option>
  <option *ngFor="let user of users" [ngValue]="user.user_id" 
      [selected]="user.user_id === curr_user_id">
    {{user.user_id}}
  </option>
</select>

<select (change)="getUserId($event.target.value)">
  <option> SELECT</option>
  <option *ngFor="let user of users" [ngValue]="user.name" 
     [selected]="user.name === curr_name">
   {{user.name}}
  </option>
</select>

虽然你要更新两个下拉列表,不管为什么不创建一个下拉列表并且以列表格式使用user-idname,这样你就不需要继续相互更新了。

另一答案

我在reactive form group的帮助下解决了我的问题。它很容易为我提供价值,我在patchValue()功能的帮助下设置了它的形式值。它对我来说很好。

以上是关于如何在角度6的下拉列表中设置双向绑定数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在角度 5 中绑定角度材料下拉列表的数据?

Angular 2 - 在下拉列表中设置选定值

如何使用 jquery 和 php 从动态数据中设置默认下拉列表?

如何将值绑定到角度下拉列表以编辑某些数据

在 DataGridViewComboBox 下拉列表中设置特定项目的颜色

面临从模型中设置下拉列表值的问题