模型绑定不适用于angular2中的选择[重复]

Posted

技术标签:

【中文标题】模型绑定不适用于angular2中的选择[重复]【英文标题】:model bind is not working with select in angular2 [duplicate] 【发布时间】:2016-08-14 10:18:06 【问题描述】:

我正在尝试设置下拉菜单的默认值,我为模型设置了默认值但它没有更新选择

请看https://plnkr.co/edit/bNM5Yxx78iykv2opazoL?p=preview

@Component(
    selector: 'my-app',
    template: `
    <h1>Hello</h1>
<select class="form-control selectpicker" (change)="changeTower()" [(ngModel)]="_selectedTower">
  <option attr.value="tower._id" *ngFor="#tower of _towers;">Tower tower.name</option>
</select>    
    `)
export class AppComponent 
  _towers = [_id:1, name: '1', _id:2, name: '2', _id:3, name: '3'];
  constructor() 
    this._selectedTower = 2 ;
  

  changeTower() 
    setTimeout(()=>
      alert( this._selectedTower);
    ,100);
  

【问题讨论】:

plnkr.co/edit/slsnV5nc3zVVqXeuIJzZ?p=preview 【参考方案1】:

您需要以这种方式使用 ngValue 进行选择:

<select class="form-control selectpicker" (change)="changeTower()" [(ngModel)]="_selectedTower">
  <option [ngValue]="tower._id" *ngFor="#tower of _towers;">Tower tower.name</option>
</select> 

看到这个 plunkr:https://plnkr.co/edit/UC5iYQUIFIrQMNeYbSQy?p=preview。

【讨论】:

【参考方案2】:

如果_selectedTower 指的是对象而不是原始值(_towers 也是如此 - 对象数组而不是原始值)然后使用 ngValue 而不是 value

<select class="form-control selectpicker" (change)="changeTower()" [(ngModel)]="_selectedTower">
  <option [ngValue]="tower" *ngFor="let tower of _towers;">Tower tower.name</option>
</select>    

【讨论】:

【参考方案3】:
<select class="form-control selectpicker" #select (change)="changeTower(select.value)" [(ngModel)]="_selectedTower">
  <option value="tower._id" *ngFor="#tower of _towers;">Tower tower.name</option>
</select>  

changeTower(id) 

    //id is the selected value

【讨论】:

以上是关于模型绑定不适用于angular2中的选择[重复]的主要内容,如果未能解决你的问题,请参考以下文章

模型绑定不适用于嵌套对象

模型绑定不适用于 ASP.NET Core 2 WebAPI 中的 POST 请求

MVC4 webapi中的反序列化/模型绑定不适用于数组

模型绑定不适用于 asp.net 核心 Web api 控制器操作方法中的 Stream 类型参数。(即使使用自定义流输入格式化程序)

PhantomJS 不适用于 Angular2 项目中的 Karma

JsonConverter 不适用于模型绑定