有4组,每组4个。这是一个测试的 UI 组件,其中用户必须为 4 个问题中的每一个选择一个从 1 到 4 的分数(这里是该测试的模拟)。在这种情况下,总分不应超过 10 分。因此,我想让那些不活动,选择它们将导致不满足这个条件(就像上面显示的测试一样)。
例如,如果用户在前两行中选择了等级 4 和 4,那么在接下来的两个块中,应该让 1 个收音机处于活动状态。
这是模板代码:
<div>
<div class="skillrow">{{skill_P}}</div>
<div class="radiorow">
<material-radio-group [(ngModel)]="selected_P">
<material-radio *ngFor="let item of skillScore" [value]="item">
{{ item }}
</material-radio>
</material-radio-group>
</div>
</div>
<div>
<div class="skillrow">{{skill_A}}</div>
<div class="radiorow">
<material-radio-group [(ngModel)]="selected_A">
<material-radio *ngFor="let item of skillScore" [value]="item">
{{ item }}
</material-radio>
</material-radio-group>
</div>
</div>
<div>
<div class="skillrow">{{skill_E}}</div>
<div class="radiorow">
<material-radio-group [(ngModel)]="selected_E">
<material-radio *ngFor="let item of skillScore" [value]="item">
{{ item }}
</material-radio>
</material-radio-group>
</div>
</div>
<div>
<div class="skillrow">{{skill_I}}</div>
<div class="radiorow">
<material-radio-group [(ngModel)]="selected_I">
<material-radio *ngFor="let item of skillScore" [value]="item">
{{ item }}
</material-radio>
</material-radio-group>
</div>
</div>
为了解决您的问题,我将首先创建一个模型:
在 Angular Material 上制作的示例。但我认为,逻辑会很清楚。我会在一个循环中制作一个模板,因为所有元素对你来说都是一样的:
在组件本身中,我们初始化技能数组:
添加聚合器字段:
在 option 中的选择更改事件上,我们创建了一个简单地调用其他两个的函数:
第一个遍历技能数组并计算我们分配给聚合器的值:
第二个计算有效值,遍历技能数组,并为每个元素分配一个可用字段:
这是一个工作示例https://stackblitz.com/edit/slrv-mat-radio-conditions