ฉันต้องการผูกองค์ประกอบที่เลือกลงในรายการของวัตถุ - ซึ่งง่ายพอ:
@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
เป็นวัตถุแทนที่จะเป็นเพียง ID ฉันพยายามเปลี่ยนค่าของตัวเลือกดังนี้:
<option *ngFor="#c of countries" value="c">{{c.name}}</option>
แต่ดูเหมือนว่าจะไม่ทำงาน ดูเหมือนว่าจะวางวัตถุในของฉันselectedValue
- แต่ไม่ใช่วัตถุที่ฉันคาดหวัง คุณสามารถเห็นนี้ในตัวอย่าง Plunker ของฉัน
ฉันพยายามเชื่อมโยงกับเหตุการณ์การเปลี่ยนแปลงเพื่อให้ฉันสามารถตั้งค่าวัตถุด้วยตนเองตามรหัสที่เลือก อย่างไรก็ตามปรากฏว่าเหตุการณ์การเปลี่ยนแปลงเกิดขึ้นก่อนที่จะมีการอัปเดต ngModel ที่ถูกผูกไว้ - หมายความว่าฉันไม่สามารถเข้าถึงค่าที่เลือกใหม่ ณ จุดนั้น
มีวิธีที่สะอาดในการผูกองค์ประกอบที่เลือกเข้ากับวัตถุด้วย Angular 2 หรือไม่?