在typescript和Angular2中绑定并获取下拉列表值

时间:2017-04-19 18:02:04

标签: javascript angular typescript select

这个问题被多次询问,无法解决我的问题。不确定这种方法有什么问题,并希望有一些新鲜的眼睛"

这是我在HTML中的dropdownlist绑定:我绑定programName,它是值和文本属性的字符串。

<select [ngModel]="selectedObject">
   <option *ngFor="let p of programs" value= {{p.programName}}>
         {{p.programName}}
   </option>
</select>

在我的.ts文件中,我正在做的是将默认值绑定到&#34;选择&#34;

 loadData(pList: IProgram[]) {
    this.programs = pList;
    if (this.programs.length > 0) {
        this.selectedObject = this.programs[0];
    }
}

数据绑定到&#34;选择&#34; 没错,

  • 但默认值显示为空文本,我需要点击并选择一个值。
  • 另一个问题是当我将下拉值从A更改为B时,&#34; selectedObject&#34;价值总是给我&#34; A&#34;而不是&#34; B&#34;。因为它是[ngModel],双向绑定会照顾。但是,它没有发生,因为我可能会在这里遗漏一些东西。

有人可以帮助解决这种方法的问题吗?

2 个答案:

答案 0 :(得分:1)

尝试以下,

<select [(ngModel)]="selectedObject">
   <option *ngFor="let p of programs" 
           [ngValue] = "p"
           [selected]="p.programName == selectedObject.programName"
          >
         {{p.programName}}
   </option>
</select>

选中此Plunker!!

希望这会有所帮助!!

答案 1 :(得分:0)

基本上,问题在于声明[ngModel]。它应该在我原来的问题中遗漏的[(ngModel)]内。 :)

非常感谢Madhu Ranjan在修复方面的帮助!

纠正(ngModel)后能够成功绑定和获取。

<select [**(ngModel)**]="selectedObject"><option *ngFor="let p of programs"value= {{p.programName}}>{{p.programName}}</option> </select>