在反应形式的选择选项中有默认值

Jos*_*eph 4 angular angular-reactive-forms angular4-forms

根据我之前已经选择的内容,我如何获得默认值。就像我编辑一些东西并且它有一个下拉菜单一样,我可以看到我之前提交的默认值,所以它不会混淆用户。例如,在我的代码中,如果我单击编辑按钮,它会将我重定向到页面并启动下面的“patchValues()”函数,它可以从供应商列表中进行选择。我想要的是,如果我点击编辑按钮,我可以在选择选项中看到一个默认值

TS

patchValues() {
    let suppliers = this.myForm.get('suppliers') as FormArray;
    this.material.suppliers.forEach(supplier => {
      suppliers.push(this.fb.group({
       supplier_id: supplier.name,
     }))
    })
  }
Run Code Online (Sandbox Code Playgroud)

HTML

<tr *ngFor="let row of myForm.controls.suppliers.controls; let i = index" [formGroupName]="i">
            <td>
              <select formControlName="supplier_id" class="col-md-12" >
                <option *ngFor="let supplier of suppliers"  [value]="supplier.id">
                  {{supplier.name}}
                </option>
              </select>
            </td>
   </tr>
Run Code Online (Sandbox Code Playgroud)

AJT*_*T82 5

希望我正确理解你的问题。如果该字段没有预值,您将有一个默认选项:

<option value="">Select supplier...</option>
<option *ngFor="let supplier of suppliers"  [ngValue]="supplier.id">
  {{supplier.name}}
</option>
Run Code Online (Sandbox Code Playgroud)

在您的 patchValues 中,您似乎想要推送实际 id 而不是名称:

this.material.suppliers.forEach(supplier => {
  suppliers.push(this.fb.group({
   supplier_id: supplier.id
 }))
Run Code Online (Sandbox Code Playgroud)

现在,如果没有供应商 id,如果供应商 id 是空字符串,则将选择默认选项“选择供应商...”。如果它不是空字符串,则需要相应地调整模板,例如,如果值是null,则需要执行以下操作:

<option value="null">Select supplier...</option>
Run Code Online (Sandbox Code Playgroud)