angular - 更改检测不适用于禁用的选择
问题描述
我有两个下拉列表。在第一个下拉列表的条件下,我想禁用第二个。但它不起作用。所以最初 isTheFirstDropdownSelected 布尔变量为真,所以第二个下拉列表被禁用,当第一个下拉列表被选中并且它的功能被称为我正在将 isTheFirstDropdownSelected 变量更改为 true,但第二个选择仍处于禁用状态。我的错误在哪里
<div class="row">
<div class="match-choosing-dropdown">
<select id="dropdown-match-picker" [formControl]="control" (change)="navigateToSection('match-info-section')"
(ngModelChange)="selectedMatchHandler($event)">
<option *ngFor="let match of matches; let i = index" [ngValue]="match">{{match.home_team_name}} VS
{{match.away_team_name}}</option>
</select>
</div>
</div>
<div class="row">
<div class="match-choosing-dropdown">
<select [attr.disabled]="isTheFirstDropdownSelected" [formControl]="control" (change)="navigateToSection('match-info-section')"
(ngModelChange)="selectedBetOptionHandler($event)" >
<option>Select</option>
<option *ngFor="let option of betOptionNames; let i = index" [ngValue]="option">{{option.name}}</option>
</select>
</div>
</div>
isTheFirstDropdownSelected = true;
selectedMatchHandler(selectedMatch): void {
this.isTheFirstDropdownSelected= false;
}
解决方案
尝试这个
selectedMatchHandler(selectedMatch): void {
this.isTheFirstDropdownSelected= null; // assign null value
}
--- 如果上述方法不起作用,那么您正在使用响应式表单尝试使用:响应式方式来启用字段
this.secondDropdownControlName.enable();
推荐阅读
- angular - 算术运算的左侧必须是“any”、“number”、“bigint”类型或枚举类型
- flutter - 无法从 api 获取数据
- python - 从循环内的 a.href 获取数据
- python - Facebook 中洞察结果的分页
- html - 为什么在 chrome 上使用“不透明度”或“绝对位置”会破坏我的“变换:rotateY(180deg)”?知道如何解决吗?
- android - Google Maps Flutter:加载地图之前出现黑屏
- java - 使用 BoxLayout 时设置 JPanel 背景
- javascript - Laravel Yajra 数据表不显示搜索、分页和过滤器
- html - 我想拥有唯一的名称一对多关系
- android - 是否可以在 Odroid C2 上成功运行“DJI GO4”或“UgCS for DJI”?