オブジェクトに値をバインドする選択コントロールを作成しようとしています。変更すると、選択したオブジェクトにアクセスできます。角2 RC4 - 選択ngModel遅延更新
フォームに多くの変更があったので、これがユーザーエラーかバグかどうかはわかりません。私はこれまででだのはここ
は次のとおりです。私が起こるたいと思うパートナーはどのようなLink to Plunker
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<h1>My First Angular 2 App</h1>
<select (change)="onChange($event)" [(ngModel)]="selected">
<option value=''></option>
<option *ngFor="let d of data" [ngValue]="d">
{{d.name}}
</option>
</select>
`
})
export class AppComponent {
diagnostic;
selected;
data = [
{ id: 1 , name: 'query 1', filters: [
{ 'filter1': 'material = 1'},
{'filter2': 'plant = 2'}
]
},
{ id: 2 , name: 'query 2', filters: [
{ 'filter1': 'material = 1'},
{'filter2': 'plant = 2'}
]
}
];
onChange(event) {
console.log(event.target.value);
console.log(this.selected);
}
}
があることonChangeイベントはどちらか、私はそれに選択されたアイテムのオブジェクトの値を渡すことを呼び出されたときメソッドを呼び出すか、ngModelでバインドされたプロパティを使用して選択した値にアクセスします。
//expected
onChange(event) {
console.log(event.target.value) // selected object bound to ngValue
console.log(this.selected) // ngModel updated to object bound to selected option
}
しかし残念ながら、event.target.value
が対象と作品のthis.selected
ソートの文字列バージョンですが、更新された上での背後に常にあります。
これを処理する別の方法や適切な方法はありますか? ngModelの遅延はバグですか?
助けていただけたら幸いです!
が完全に動作しますが...私のアプリでそれを試してみましたが、それはいくつかのより多くの周りを果たしたそう...動作しませんでした。問題は、ngModelとngModelChangeの順です。 '(ngModelChange)=" onChange() "[(ngModel)] ="選択済み "は動作しません。関数onChange()は、ngModelが更新される前に呼び出されます。これは私がいつも私が再びそれを変更するときに更新を見ていた理由です。あなたはこれについての注釈であなたの答えを更新できますか?また、Angular Repoに問題を投げます。それがバグでなければ、間違いなくどこかで文書化する必要があります。 – ljaustin
これは既に既知の問題であるようです。私は問題にこのstackoverflowを追加します。 https://github.com/angular/angular/issues/3406 – ljaustin