В теге select
мне нужно двустороннее связывание, но оно не работает.
<select [(ngModel)]="selectedCountry">
<option *ngFor="let country of countries" [ngValue]="country">
{{country.name}}
</option>
</select>
selectedCountry
является экземпляром Country
: selectedCountry.id = 3
countries
- это Country
Список экземпляров: country1.id = 1, country3.id = 3, country3.id = 3
selectedCountry
и country3
имеют одинаковые значения, но это не один и тот же экземпляр. Тогда опция country3
не выбрана.
Я переписал оператор равенства (==) и hashCode
для класса Country
, но он все равно не работает.
В чем проблема? Есть ли что-то похожее на угловую директиву compareWith
?
<select [compareWith]="equals" [(ngModel)]="selectedCountry">
<option *ngFor="let country of countries" [ngValue]="country">
{{country.name}}
</option>
</select>
equals(o1: Country, o2: Country) {
return o1.id === o2.id;
}