【问题标题】:ng-switch not working even isactive is falseng-switch 不工作,即使 isactive 为假
【发布时间】:2019-05-03 13:26:51
【问题描述】:
ng-switch 中有两个按钮,如果 isActive 为 false,任何一个都应该显示,但同时显示两个按钮。我在做什么错?
<div ng-switch="user.IsActive">
<div ng-switch-when="false">
<button type="button" (click)="activateDeactivateUser(user.UserId,user.IsActive)" class="btn btn-primary active">Deactivate</button>
</div>
启用
【问题讨论】:
标签:
javascript
angularjs
ng-switch
【解决方案1】:
您不想在这里使用 ngSwitch,而是使用 ngIf:
<div *ngIf="user.IsActive">
<button type="button" (click)="activateDeactivateUser(user.UserId,user.IsActive)" class="btn btn-primary active">Deactivate</button>
</div>
当 user.IsActive 变量返回 true 时,按钮将显示。当它返回 false 时,按钮将被隐藏。
另外,您的 ngSwitch 语法不正确。正确的语法遵循以下模式:
<div [ngSwitch]="variableCondition">
<component1 *ngSwitchCase="variableCondition1"></component1>
<component2 *ngSwitchCase="variableCondition2"></component2>
</div>
【解决方案2】:
Angular ng-switch 会将您的 false 评估为变量而不是 boolean value 所以将您的开关情况更改为 ng-switch-when="'false'"
示例
<div ng-switch="user.IsActive">
<div ng-switch-when="'false'">
<button type="button" (click)="activateDeactivateUser(user.UserId,user.IsActive)" class="btn btn-primary active">Deactivate</button>
</div>
<div ng-switch-default>
<button type="button" (click)="activateDeactivateUser(user.UserId,user.IsActive)" class="btn btn-primary active">Activate</button>
</div>
</div>
【解决方案3】:
我建议将 ng-if 用于布尔值。
<div>
<div ng-if="user.IsActive">
<button type="button" (click)="activateDeactivateUser(user.UserId,user.IsActive)" class="btn btn-primary active">Deactivate</button>
</div>
<div ng-if="!user.IsActive">
<button type="button" (click)="activateDeactivateUser(user.UserId, user.IsActive)" class="btn btn-primary active">Activate</button>
</div>
</div>
但这是 ng-switch 的示例
<div ng-switch="user.IsActive">
<div ng-switch-when="true'">
<button type="button" (click)="activateDeactivateUser(user.UserId,user.IsActive)" class="btn btn-primary active">Deactivate</button>
</div>
<div ng-switch-when="false">
<button type="button" (click)="activateDeactivateUser(user.UserId, user.IsActive)" class="btn btn-primary active">Activate</button>
</div>
</div>