我进行了广泛搜索。我从other answers得到的是,如果我想选择特定的选项,则需要使用[selected]
。
它似乎不起作用。为什么? 这是我所拥有的:
<ngx-datatable-column name="status" prop="operationStatus" [flexGrow]="1">
<ng-template let-value="value2" let-row="row" let-rowIndex="rowIndex" gx-datatable-cell-template>
<select class="geraeteStatus" [(ngModel)]="selectableGerateStatus">
<option *ngFor="let e of selectableGerateStatus" [ngValue]="e"
[selected]="e.id === value2">
{{e.id}}
</option>
</select>
</ng-template>
</ngx-datatable-column>
我确信e.id
的值每次迭代至少等于value2
的值。但是它只是行不通。
实际上,我可以将所需的任何内容(例如eid === 2,甚至是“ true”)放入[selected]
中,它没有任何作用。
我不知道我在想什么。任何答案都受到高度赞赏。
答案 0 :(得分:0)
您需要将应绑定到“ select”的字段设置为ngModel,而不是可能的选项列表。请像这样更改您的代码:
<select class="geraeteStatus" [(ngModel)]="x.status">
<option *ngFor="let e of selectableGerateStatus" [ngValue]="e">
{{e.id}}
</option>
</select>
' x.status '必须替换为您的真实字段。
答案 1 :(得分:0)
使用value而不是ngValue绑定选项,如下所示。
<select class="my-status" [(ngModel)]="myModel.status">
<option [ngValue]="null" selected disabled> Select Status </option>
<option *ngFor="let e of selectableGerateStatus" [value]="e">
{{e.id}}
</option>
</select>
答案 2 :(得分:0)
我将介绍如何解决该问题。请注意,我是新手,对角度而言,我的方法可能是基本的。我还要感谢@Eliseo,他强调了 ngModel和selected不能一起使用的事实。这就是为什么我摆脱了前者,只使用了选择的方法:
component.html
<select class="geraeteStatus" (change)="changeGaerateStatus($event, rowIndex)">
<option *ngFor="let e of selectableGerateStatus" [selected]="value == e.id">
{{e.label}}
</option>
</select>
和.ts文件:
this.selectableGerateStatus = [
{
id: 0,
label: BaseDataComponent.NEW
}, {
id: 1,
label: BaseDataComponent.ACTIVE
}, {
id: 2,
label: BaseDataComponent.DEINSTALLED
}
]
它解决了我的问题,但这可能不是最好的方法。随时发表评论。