Mat-Select 下拉列表不选择 patchvalue

时间:2021-03-16 22:01:34

标签: angularjs angular-material dynamic-forms

所以我用 patchvalue 加载我的表单,并且由于某种原因 mat-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 之外,所有东西都正确绑定。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

我认为模板中每个 Mat-Option 中的 value 字段都被解释为字符串。如果您将 value 属性括在方括号中,如下所示:

[value] = "0" 

它应该工作