我正在尝试自动填充选择输入。 当表单打开时,select的值未填写,这是我的代码。
我有一个对象的静态数组(extensions
),用户可以从中选择。此数组为CountryCode[]
类型。
view.component.ts
<form [formGroup]='form' autocomplete="off">
...
<select class="form-control" formControlName='cellExtInput'>
<option *ngFor="let ext of extensions" [ngValue]="ext">
({{ ext.callingCode }}) {{ ext.name }}
</option>
</select>
...
</form>
controller.component.ts
export interface CountryCode {
id: any,
code3l: any,
code2l: any,
name: any,
flag: any,
callingCode: any,
}
async ngOnInit() {
// Initialize form
this.form = new FormGroup({
...
cellExtInput: new FormControl(''),
});
var controls = this.form.controls;
var code : CountryCode = {
id: "131",
code3l: "PRT",
code2l: "PT",
name: "Portugal",
flag: "http://flags.fmcdn.net/data/flags/w580/pt.png",
callingCode: "+351"
}
controls.cellExtInput.setValue(code, {onlySelf: true});
......
}
答案 0 :(得分:1)
尝试
<select class="form-control" formControlName='cellExtInput'>
<option *ngFor="let ext of extensions" [value]="ext">
({{ ext.callingCode }}) {{ ext.name }}
</option>
</select>
我认为您在ngValue
上遇到了问题。您正在为其指定一个对象,而不是原始类型,而<option>
则采用原始类型的值。
属性 | 值 | 说明
已禁用|禁用指定应禁用一个选项
标签|文字|为选项指定一个较短的标签
已选择|选择指定在页面时应预先选择一个选项 加载
值|文字|指定要发送到服务器的值
注意:OP仅在其代码中将[ngValue]
更改为[value]
。