У меня есть угловая форма с элементом управления select, который получает свои значения из enum на сервере.
<select name="" id="" [formControl]="form.get('myType')">
<option *ngFor="let type of types" [value]="+type['key']">
{{ type['value'] }} ({{ type['key']}})
</option>
</select>
Я создал здесь пример с жестко закодированным ответом в переменной типов: stackblitz
Я сейчас пытаюсь заполнить форму, используясформируйте метод patchValue (см. кнопку и метод setValues).
setValues() {
this.form.patchValue({
myType: 0
});
}
В действительности этот ответ приходит с сервера.
Модель с сервера выглядит следующим образом:
public class TestModel
{
public MyType Type { get; set; }
}
Пока это работает.
Если я изменю модель на сервере для включения атрибута Json StringEnumConverter:
public class TestModel
{
[JsonConverter(typeof(StringEnumConverter))]
public MyType Type { get; set; }
}
Теперь метод patchValue выглядит следующим образом (см. Кнопку и метод setValues2):
setValues2() {
this.form.patchValue({
myType: 'Type1'
});
}
Однако мое значение больше не загружается в элемент управления select.
Как обойти это?
Я начал создавать директиву, но не знаю, как перехватить привязки, чтобы изменить значение на эквивалент ключа enums.
Пожалуйста, помогите