Angular2 - 更新选择框更新值

时间:2016-05-05 14:45:56

标签: angular angular2-forms

当用户在选择框中选择新选项时,我正在尝试获取新值。

现在,我在onSubmitonFooChange两种情况下都收到了 undefined ,我有点理解为什么,因为b只在线上定义在调用之后。

我已经看到一些不同的方法来更新选择框中的值,但到目前为止我实际上无法解决这个问题。

你能就如何解决这个问题给我一个建议吗?

class Foo {
    constructor(
        bar: string;
    ) {}
}
foo: foo = new Foo(
    'someValueWillCome'
)
onFooChange(newBar) {
    this.foo.bar = newBar
}
onSubmit() {
    console.log('onSubmit: ', this.foo);
}
<form (ngSubmit)="onSubmit()" #fooForm="ngForm">
  <label>Location</label>
  <select [(ngModel)]="foo.bar" ngControl="bar" (click)="onFooChange(b)">
    <option *ngFor="#b of aListOfBars" [value]="b">{{b}}</option>
  </select>           
<button type="submit">Submit</button>
<form>

换句话说:如何获取所选的选项值?

我设法使用$event.target.value,但必须是一个有角度的方法来解决这个问题。

  <select [(ngModel)]="foo.bar" ngControl="bar" (click)="onFooChange($event.target.value)">
    <option *ngFor="#b of aListOfBars" [value]="b">{{b}}</option>

通过将Angular从2.0.15更新为2.0.17来解决此问题

2 个答案:

答案 0 :(得分:1)

这是最近修复的Firefox和IE的已知问题

请参阅https://github.com/angular/angular/pull/8148

答案 1 :(得分:0)

我不确定我是否理解正确;如果用户选择其他选项,则foo.bar中的值会通过<select>更改为[(ngModel)]="foo.bar";你已经拥有了新的价值。