Я хотів би прив’язати вибраний елемент до списку об’єктів - що досить просто:
@Component({
selector: 'myApp',
template: `<h1>My Application</h1>
<select [(ngModel)]="selectedValue">
<option *ngFor="#c of countries" value="c.id">{{c.name}}</option>
</select>`
})
export class AppComponent{
countries = [
{id: 1, name: "United States"},
{id: 2, name: "Australia"}
{id: 3, name: "Canada"},
{id: 4, name: "Brazil"},
{id: 5, name: "England"}
];
selectedValue = null;
}
У цьому випадку виявляється, що це selectedValue
було б число - ідентифікатор вибраного елемента.
Однак насправді я хотів би прив’язати до самого об'єкта країни так, що selectedValue
це об'єкт, а не просто ідентифікатор. Я спробував змінити значення параметра так:
<option *ngFor="#c of countries" value="c">{{c.name}}</option>
але це, здається, не працює. Здається, розміщувати об’єкт в моєму selectedValue
- але не тому об’єкті, якого я очікував. Це ви можете побачити на моєму прикладі Plunker .
Я також спробував прив’язатись до події зміни, щоб я міг сам встановити об'єкт на основі вибраного ідентифікатора; однак, виявляється, що подія зміни запускається перед оновленням пов'язаного ngModel - це означає, що я не маю доступу до щойно вибраного значення в цій точці.
Чи є чистий спосіб прив’язати вибраний елемент до об'єкта з кутом 2?