Przebadałem wiele podobnych istniejących odpowiedzi na SO i gdzie indziej, ale nie mogę znaleźć rozwiązania tego problemu.Ustawianie wybranej opcji sterowania select w modelu sterowanym Angular 2
Używam podejścia opartego na modelu w Angular 2 do budowania mojego formularza, który jest zarówno formą dodawania, jak i edycji. W trybie edycji wartości są wypełniane danymi pobranymi z usługi: ten aspekt jest w porządku, ponieważ wszystkie proste wejścia tekstowe są prawidłowo powiązane.
Jedną z właściwości jest „Kraj” i jest to obiekt w następujący sposób:
export class Country {id: number; name: string;}
Chcę powiązać to do wyboru sterowania, który będzie miał listę krajów dostępnych, a jeden z model jest wypełniany po załadowaniu formularza. Chcę, aby wartość powiązania była obiektem kraju, a nie tylko identyfikatorem.
Oto html z wyboru sterowania:
<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>
A oto gdzie staram się zapełnić wartość z klasy komponent:
(<FormControl>this.personForm.controls['country'])
.setValue(this.person.country, { onlySelf: true });
Ale nie ma wybrana opcja gdy ładuje się strona, mimo że konsola potwierdza, że this.person.country istnieje i jest wypełniony poprawnym obiektem.
Mogę to zrobić działając z ids: zmieniając na [wartość] = "c.id" w widoku i dołączając .id w klasie, a następnie działa, że wybrana jest właściwa opcja. Problem polega na tym, że wybranie nie emituje już obiektu dla właściwości kraju, tylko identyfikator. Próbowałem zmienić [wartość] na [ngValue] i uzyskać ten sam wynik. Dodałem nawet [ngModel] = "country" do elementu select, co też nie pomogło.
Byłbym wdzięczny za każdą pomoc.
że to zrobił! Bardzo dziękuję za Twoją pomoc. Nigdy nie dostałbym [0] na końcu filtra - czy to pierwsza zwracana wartość? – Matt
Tak, to pierwsza wartość, teoretycznie ID jest wyjątkowa, więc mam nadzieję, że jest tylko jedna. – silentsod
@silentsod, czy wiesz jak ustawić i pokazać '- Wybierz kraj -" jako wartość domyślną? –