无法 select 选项中的值(Angular 下拉列表。)
Unable to select value in option (Angular dropdown list.)
我到处搜索。我从 得到的是,如果我想 select 一个特定的选项,我需要使用 [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
的值。然而,它只是行不通。
实际上我可以把我想要的任何东西(e.id === 2,甚至 'true')放入 [selected]
它没有任何效果。
我不知道我错过了什么。非常感谢任何答案。
不需要在你的选项中使用[selected]
只需进行如下更改
Component.html
<select class="geraeteStatus" (change)="onChange($event)" [(ngModel)]="selectedStatus">
<option *ngFor="let e of selectableGerateStatus" [ngValue]="e.id">
{{e.id}}
</option>
</select>
但在这里您需要将 ngValue
与您的 ngModel
匹配,然后才会 selected.
Component.ts
selectedStatus: string;
onChange(status: string) {
this.selectedStatus = status;
}
有关 select 个选项的更多信息 check here
将选项与值而不是 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>
我介绍一下我是如何解决这个问题的。请注意,我是 angular 的新手,我的方法可能很初级。我还想感谢@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
}
]
它解决了我的问题,但它可能不是最好的方法。请随时发表评论。
我到处搜索。我从 [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
的值。然而,它只是行不通。
实际上我可以把我想要的任何东西(e.id === 2,甚至 'true')放入 [selected]
它没有任何效果。
我不知道我错过了什么。非常感谢任何答案。
不需要在你的选项中使用[selected]
只需进行如下更改
Component.html
<select class="geraeteStatus" (change)="onChange($event)" [(ngModel)]="selectedStatus">
<option *ngFor="let e of selectableGerateStatus" [ngValue]="e.id">
{{e.id}}
</option>
</select>
但在这里您需要将 ngValue
与您的 ngModel
匹配,然后才会 selected.
Component.ts
selectedStatus: string;
onChange(status: string) {
this.selectedStatus = status;
}
有关 select 个选项的更多信息 check here
将选项与值而不是 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>
我介绍一下我是如何解决这个问题的。请注意,我是 angular 的新手,我的方法可能很初级。我还想感谢@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
}
]
它解决了我的问题,但它可能不是最好的方法。请随时发表评论。