答案 0 :(得分:2)
将[(ngModel)]
添加到select
本身,然后将其从option
中删除。将ngModel
添加到option
是没有意义的。相反,您需要设置选项的[value]
属性。
<select class="form-control" id="sel1" [(ngModel)]="selectedItem">
<option *ngFor="let data of dropDownArr" [value]="data.course" [ngModelOptions]="{standalone: true}" ngDefaultControl>{{data.course}}</option>
</select>
组件
export class AppComponent implements OnInit {
dropDownArr = [];
selectedItem;
onSubmit(event: Event) {
event.preventDefault();
}
constructor(public dropdown: DropDownService) {
}
ngOnInit() {
this.dropDownArr = this.dropdown.getData();
}
}
答案 1 :(得分:1)
您需要将[(ngModel)]
放在选项上而不是选项上。然后它将获取所选选项的值。
然而,您目前正在尝试做什么并不合理。您希望ngModel映射到单独的值(让我们称之为selectedCourse)来表示所选项目。然后你有类似的东西:
<select class="form-control" id="sel1" [(ngModel)]="selectedCourse"
[ngModelOptions]="{standalone: true}" ngDefaultControl>
<option *ngFor="let data of dropDownArr" [value]="data.course">{{data.course}}</option>
</select>
答案 2 :(得分:1)
您可以将初始值传递给select
并像这样填充options
,
<select class="form-control" id="sel1" [(ngModel)]="dropDownArr[0].course">
<option *ngFor="let data of dropDownArr" [value]="data.course" ngDefaultControl>{{data.course}}</option>
</select>
修改强>
由于您提到它是一个模板驱动表单,您还需要向name
标记
select
属性
<select class="form-control" name="sel1" id="sel1" ngModel>
<option value="" disabled>Choose a state</option>
<option *ngFor="let data of dropDownArr" [value]="data.course" ngDefaultControl>{{data.course}}</option>
</select>
有关详细信息,请参阅this