Mat-Select 下拉列表不 select 在补丁值上
Mat-Select dropdown doesn't select on patchvalue
所以我用 patchvalue 加载了我的表单,出于某种原因,mat-select 没有 select 基于该值。
这是我的:
<mat-form-field appearance="fill">
<mat-select name="serverTypeId" formControlName="serverTypeId">
<mat-option value="0">None</mat-option>
<mat-option value="1">Web</mat-option>
<mat-option value="2">Citrix</mat-option>
</mat-select>
</mat-form-field>
在我的组件中我有这个:
initServer(zoneId) {
return new FormGroup({
id: new FormControl(0),
zoneId: new FormControl(zoneId),
serverName: new FormControl('New Server', [Validators.required]),
serverTypeId: new FormControl(0, [Validators.required]),
});
}
addServer(j, id) {
const fg = <FormArray>this.region.get('zones');
if (fg) {
var serverfg = <FormArray>fg.controls[j].get('servers');
if (serverfg) {
serverfg.push(this.initServer(id));
}
}
}
和
_.each(r.zones, function (zone, i) {
self.addZone();
let zoneFG = self.getZones(self.region)[i];
if (zoneFG) {
zoneFG.patchValue(zone);
_.each(zone.servers, function (server, y) {
self.addServer(y, server.zoneId);
let serverFG = self.getServers(zoneFG)[y];
if (serverFG) {
serverFG.patchValue(server);
}
});
}
});
这是模型:
export interface ServerInfo {
id: number;
serverTypeId: number;
zoneId: number;
serverName: string;
}
除 serverTypeId 外,一切都正确绑定。我在这里缺少什么?
我认为您模板中每个 Mat-Option 中的值字段都被解释为字符串。如果像这样将值属性括在方括号中:
[value] = "0"
它应该有效
所以我用 patchvalue 加载了我的表单,出于某种原因,mat-select 没有 select 基于该值。
这是我的:
<mat-form-field appearance="fill">
<mat-select name="serverTypeId" formControlName="serverTypeId">
<mat-option value="0">None</mat-option>
<mat-option value="1">Web</mat-option>
<mat-option value="2">Citrix</mat-option>
</mat-select>
</mat-form-field>
在我的组件中我有这个:
initServer(zoneId) {
return new FormGroup({
id: new FormControl(0),
zoneId: new FormControl(zoneId),
serverName: new FormControl('New Server', [Validators.required]),
serverTypeId: new FormControl(0, [Validators.required]),
});
}
addServer(j, id) {
const fg = <FormArray>this.region.get('zones');
if (fg) {
var serverfg = <FormArray>fg.controls[j].get('servers');
if (serverfg) {
serverfg.push(this.initServer(id));
}
}
}
和
_.each(r.zones, function (zone, i) {
self.addZone();
let zoneFG = self.getZones(self.region)[i];
if (zoneFG) {
zoneFG.patchValue(zone);
_.each(zone.servers, function (server, y) {
self.addServer(y, server.zoneId);
let serverFG = self.getServers(zoneFG)[y];
if (serverFG) {
serverFG.patchValue(server);
}
});
}
});
这是模型:
export interface ServerInfo {
id: number;
serverTypeId: number;
zoneId: number;
serverName: string;
}
除 serverTypeId 外,一切都正确绑定。我在这里缺少什么?
我认为您模板中每个 Mat-Option 中的值字段都被解释为字符串。如果像这样将值属性括在方括号中:
[value] = "0"
它应该有效