SO ve başka yerlerde birçok benzer mevcut yanıtı araştırdım, ancak bunun çözümünü bulamıyorum.Angular 2 modele dayalı formda seçili kontrol seçeneğinin ayarlanması
Biçim oluşturmak için Angular 2'deki modele dayalı yaklaşımı kullanıyorum, bu hem bir ekleme hem de düzenleme formudur. Düzenleme modundayken, veriler bir hizmetten alınan verilerle doldurulur: bu yönün tamamı iyidir, çünkü basit metin girişlerinin hepsi doğru şekilde bağlanır. özelliklerinin
biri 'Ülke' ve aşağıdaki gibi bu bir nesnedir:
export class Country {id: number; name: string;}
Ben mevcut ülkelerin listesini olacak seçkin bir denetime bu bağlamak istiyorum ve itibaren bir form yüklendiğinde nüfuslu model. Bağlantının değerini yalnızca kimlik değil, ülke nesnesi olarak istiyorum. İşte
seçme kontrolün html var:<select class="form-control" id="country" formControlName="country">
<option value="default">--Select a country--</option>
<option *ngFor="let c of countries" [value]="c">{{c.name}} </option>
</select>
Ve burada ben bileşen sınıfından değerini doldurmak için deneyin nerede:
(<FormControl>this.personForm.controls['country'])
.setValue(this.person.country, { onlySelf: true });
Ama seçilen seçenek varken konsol, bu.person.country öğesinin var olduğunu ve doğru nesne ile doldurulduğunu doğrulamasına rağmen sayfa yüklenir.
Bunu ids ile çalışabilirim: sınıfta görünüm ve ekleme .id'de [value] = "c.id" olarak değiştiriliyor ve sonra doğru seçeneğin seçildiği yerde çalışıyor. Sorun, seçimin artık ülke mülküne, sadece kimliğe bir nesne yaymamasıdır. [Value] değerini [ngValue] olarak değiştirmeyi denedim ve aynı sonucu elde ettim. Seçici öğeye [ngModel] = "ülke" yi ekledim ve bu da işe yaramadı.
Yardımlarınız için minnettar olurum.
! Yardımın için çok teşekkürler. Filtrenin sonunda asla [0] 'a sahip olamayacağım - bu, eşleşen ilk değer döndürülecek mi? – Matt
Evet, ilk değer, teorik olarak ID benzersizdir, bu yüzden sadece bir tane olacağını umuyorum. – silentsod
@silentsod, - Bir ülke seç - varsayılan değer olarak nasıl ayarlanacağını ve gösterileceğini biliyor musunuz? –