【发布时间】:2026-01-14 05:20:04
【问题描述】:
我想在表单选择中选择一个选项,但我没有找到方法。
我在网络上检查了许多类似的问题,但没有找到一种方法使解决方案适应我的代码。
这里是视图:
<select class="form-control" #selectedValue name="selectedSalles"
id="selectedSalles" [(ngModel)]="selectedSalle"
(ngModelChange)="addSalleToSelected($event)">
<option *ngFor="let salle of allSalleEtb | async"
[ngValue]="salle" [value]="selectedSalle" >
{{salle.nom}}
</option>
</select>
使用此代码,列表allSalleEtb 的第一项被选中,但它应该是另一个。
如果我不使用此 `[value]="selectedSalle",则不会选择任何内容并且选择为空白。
我从以下位置获得“salle”对象:
public getSlot(){
this.creneauService.getSlot(this.idEtablissement, this.idCreneau)
.subscribe((data: CourseSlot) => {
this.selectedSalle = data.salle;
}
);
}
更多信息:
对象“salle”包含“nom”和“id”属性:
salle:Object {idSalle: 2, nom: "110A"}
控制器从 httpClient 获取请求接收信息:
getSlot(idEtablissement: number, idCreneau: number){
const url = environment.API_URL + "/etablissement/" + idEtablissement + "/creneaux/" + idCreneau;
return this.httpClient.get(environment.API_URL + "/etablissement/" + idEtablissement + "/creneaux/" + idCreneau);
}
非常感谢您的帮助!!
-----------已编辑
当我更改“salle”(ngModelChange)="addSalleToSelected($event)" 的值时,SelectedSalle 被编辑,并用于发布表单:
addSalleToSelected(salle){
this.salle = salle;
this.selectedSalle = salle;
console.log("salle added");
console.log(salle);
}
在我所有的试探中,我忘记并删除了需要的选项中的[ngValue]="salle",所以我把它放回去了。
【问题讨论】:
-
selectedSalle是否指的是在allSallEtb列表中找到的salle实例?还是它是一个单独的实例,包含与列表中的一项相同的值? -
您总是设置
[value] = selectedSalle,这意味着所有选项的值相同。 -
@ConnorsFan selectedSalle 是所选项目的值。我已经编辑了我的帖子以显示该方法。 @Amit-Chigadabi 我使用 [value] 尝试选择该项目,但它不起作用。我已将
[ngValue]="salle"放回原处,但我误删了它,但这是必需的。 -
只需使用
[value]="salle"并从选项元素中删除[ngvalue]属性。因为选定的值将设置为ngModel变量selectedSalle -
我发现了一个我没有发现的问题。当我加载包含要编辑的信息的页面时,“salle”是一个正确的对象。 如果我改变“salle”的值,它就会变成“[object Object]”,不再是真实的对象了。。我已删除 [ngvalue]。