在 Angular 7 中,选择下拉值 id 传递给 ngFor 列表中的所有选择下拉列表

Posted

技术标签:

【中文标题】在 Angular 7 中,选择下拉值 id 传递给 ngFor 列表中的所有选择下拉列表【英文标题】:In Angular 7 select dropdown value id passes to all select dropdowns in ngFor list 【发布时间】:2019-10-03 20:10:12 【问题描述】:

我正在使用 ngFor 获取标签并选择下拉列表,特别是 Angular 7 中的 div 标签。但是,如果我从任何一个选择下拉列表中选择选项,它的更改将发生在 div 标签中的所有选择下拉列表中

<div class="row">
    <ng-container *ngFor='let item of Bedroom.PBeda'>
        <div class="col-lg-3 col-md-6 col-sm-6 col-12">
            <span class="font-wt-600">item.PBedName</span><br /><br />
        </div>
        <div class="col-lg-3 col-md-6 col-sm-6 col-12">
            <select class="form-control" name="value" id="bedIDitem.PBedID"[(ngModel)]="beds.value (ngModelChange)="onChangeBedsDetails($event,item.PBedID)">
                <option value="0">Select</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
            </select>
        </div>
    </ng-container>
</div>

【问题讨论】:

您能否为此制作 stackblitz 示例或分享您的 onChangeBedsDetails 方法代码,以便我们更好地了解您在该方法中所做的事情。 将投注类型传递给onchangeBedsDetails方法并根据床型设置值 【参考方案1】:

所有下拉列表值都发生变化的原因是因为所有下拉列表都有相同的ngModel,而是将值存储在数组中,如下所示:

组件 HTML:

<div class="row">
    <ng-container *ngFor='let item of Bedroom.PBeda'>
        <div class="col-lg-3 col-md-6 col-sm-6 col-12">
            <span class="font-wt-600">item.PBedName</span><br /><br />
        </div>
        <div class="col-lg-3 col-md-6 col-sm-6 col-12">
            <select class="form-control" name="value" id="bedIDitem.PBedID" 
                    [(ngModel)]="beds.value[item.PBedID]" (ngModelChange)="onChangeBedsDetails($event,item.PBedID)">
                <option value="0">Select</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
            </select>
        </div>
    </ng-container>
</div>

组件 TS:

import  Component  from '@angular/core';

@Component(
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
)
export class AppComponent 
  name = 'Angular';
  beds: any = 
    value: []
  
  Bedroom: any = 
    PBeda: [
      
        PBedID: 1,
        PBedName: 'hello'
      ,
      
        PBedID: 2,
        PBedName: 'hello2'
      
    ]
  

  onChangeBedsDetails(event, id) 
    console.log(this.beds.value[id]);
  

Stackblitz Link

【讨论】:

以上是关于在 Angular 7 中,选择下拉值 id 传递给 ngFor 列表中的所有选择下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

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

angular 无法重置下拉框的值

下拉显示值填充在模式的 id 属性中,而不是 Angular 中的实际 id

将值传递给子组件Angular 7

Angular - 我正在尝试从数组对象值的下拉菜单中填充和选择

选择 -- 请选择 -- 作为 angular 4.0 html 表单中下拉列表的默认值