【发布时间】:2021-07-04 12:42:31
【问题描述】:
我希望在用户从下拉菜单“类别”中选择一个值之前,以灰色背景禁用下拉菜单“子类别”(并且无法打开具有定义占位符的下拉菜单)。我正在使用反应形式。我的列表“类别”和“子类别”在组件类中进行了硬编码,并且我在顶部声明了一个 selectedSubcategories 列表,以保留基于所选类别的子类别列表。
在模板驱动的方法中,我设法通过使用 [disabled] 属性来禁用此下拉菜单。
我的下拉菜单“类别”的 html:
<select class="form-control" (change)="selectChangeCategory($event)">
<option disabled selected>Select...</option>
<option *ngFor="let category of categories">
{{category.name}}
</option>
</select>
跟踪下拉菜单“类别”中选择的值的 selectChangeCategory 方法:
selectChangeCategory(event: any){
this.selectedCategory = event.target.value;
this.selectedSubcategories = this.selectSubcategory(this.selectedCategory);
}
返回正确子类别列表的selectSubcategory方法:
selectSubcategory(selectedCategory: string){
if(selectedCategory == "Category 1"){
this.selectedSubcategories = this.subcategoriesCategory1;
}
else if(selectedCategory == "Category 2"){
this.selectedSubcategories = this.subcategoriesCategory2;
}
else{
this.selectedSubcategories = [{name: 'empty!'}];
}
return this.selectedSubcategories;
}
我的下拉菜单“子类别”的 html:
<select class="form-control" (change)="selectSubcategory(selectedCategory)" value="subcategory.name" [disabled]="selectedCategory===''">
<option disabled selected >Select...</option>
<option *ngFor="let subcategory of selectedSubcategories">
{{subcategory.name}}
</option>
</select>
[disabled]="selectedCategory===''" 在模板驱动的方法中完美运行。下拉菜单“子类别”具有漂亮的灰色背景,并且在用户选择类别之前被禁用。在反应形式方法中,此代码失败。选择类别后,我设法仅显示子类别,但您仍然可以打开“子类别”的下拉菜单并看到“选择...”标签。
编辑:这是我在 ngOnchanges() 方法中的代码:
ngOnChanges(){
this.selectedSubcategories = this.selectSubcategory(this.selectedCategory);
}
我非常感谢这里的任何帮助。
【问题讨论】:
标签: angular drop-down-menu angular-reactive-forms disable