当用户在选择框中选择新选项时,我正在尝试获取新值。
现在,我在onSubmit
和onFooChange
两种情况下都收到了 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来解决此问题
答案 0 :(得分:1)
这是最近修复的Firefox和IE的已知问题
答案 1 :(得分:0)
我不确定我是否理解正确;如果用户选择其他选项,则foo.bar
中的值会通过<select>
更改为[(ngModel)]="foo.bar"
;你已经拥有了新的价值。