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)
希望我正确理解你的问题。如果该字段没有预值,您将有一个默认选项:
<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)