Angular 2下拉列表条件元素

时间:2018-07-22 09:03:53

标签: angular

返回一个结果列表,每个结果列表的状态值在1到n之间。 示例:

ID CurrentStatusID MaxStatusID

1、2、5

2、2、3

3,5,-

状态来自带有下拉列表的选择下拉字段,

aStatusID aStatusName

1,待处理

2,正在审核

3,被临时接受

4,已接受

5,已完成

结果中的每个结果都有一个选择字段以更改状态 状态只能更改为小于记录的最大状态ID的值(选择下拉列表使用以下代码)

 <select name="aStatus" id="aStatus" class="form-control" 
(change)="cAStatus($event,ticket.tRID)" required>
<option *ngFor="let aStatus of aStatusList"
[ngValue]="aStatus.aStatusID"
          [selected]="ticket.aStatus.trim() === aStatus.aStatusName.trim()?'selected':''">{{aStatus.aStatusName}}
          </option>
</select>

如何将大于或等于记录的最大StatusID的选项显示为灰色? 例子

记录ID 1将在下拉列表中显示为灰色的状态ID 5

记录ID 2将在下拉列表中显示灰色的状态ID 3、4和5

记录ID 3将在下拉列表中显示所有aStatusID可选

1 个答案:

答案 0 :(得分:0)

您可以设置选项的禁用属性。

例如

 <select name="aStatus" id="aStatus" class="form-control"  required>
<option *ngFor="let aStatus of aStatusList"
          [ngValue]="aStatus.aStatusID"
          [selected]="ticket.aStatus.trim() === aStatus.aStatusID.trim() ?'selected':''"
          [disabled]="ticket.aMaxStatusId && ticket.aMaxStatusId !== '-' && aStatus.aStatusID.trim() >= ticket.aMaxStatusId.trim()">{{aStatus.aStatusName}}
</option>
</select>

上述解决方案的最大状态为“-”。 如果将maxStatus改为''或未提供,则可以省去检查,只需要:

<option *ngFor="let aStatus of aStatusList"
  [ngValue]="aStatus.aStatusID"
  [selected]="ticket.aStatus.trim() === aStatus.aStatusID.trim() ?'selected':''"
  [disabled]="ticket.aMaxStatusId?.trim() && aStatus.aStatusID.trim() >= ticket.aMaxStatusId.trim()">{{aStatus.aStatusName}}
</option>

希望这会有所帮助。