我有一个带有选择控件的角度形式,它从服务器上的枚举接收它的值。
<select name="" id="" [formControl]="form.get('myType')">
<option *ngFor="let type of types" [value]="+type['key']">
{{ type['value'] }} ({{ type['key']}})
</option>
</select>
我在这里创建了一个示例,其中响应硬编码在类型变量中:stackblitz
我现在正在尝试使用 form 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'
});
}
但是我的值不再加载到选择控件中。
我怎样才能解决这个问题?
我开始创建一个指令,但我不知道如何拦截绑定以将值更改为等效的枚举键。
请帮忙