2017-05-04 217 views
7

我有多个switch语句,但对于某些情况下我需要常见的情况。所以,我想在Angular 2 ngSwitchCase,OR操作符不工作

OR operator => ||

例子:

 <ng-container [ngSwitch]="options"> 
      <ng-container *ngSwitchCase="'a'">Code A</ng-container> 
      <ng-container *ngSwitchCase="'b'">Code B</ng-container> 
      <ng-container *ngSwitchCase="'c'">Code C</ng-container> 
      <ng-container *ngSwitchCase="'d' || 'e' || 'f'">Common Code</ng-container> 
      <ng-container *ngSwitchDefault>Code Default</ng-container> 
     </ng-container> 

输出:

if case = 'd' returns Common Code 
else if case = 'e' and 'f' returns the Code Default 

这里倒数第二个案例是由多例,现在默认情况下, case 'd'只能工作,不能用于case 'e' and 'f'

我看不到任何多情况下,ngSwitchCase文档里面:

https://angular.io/docs/ts/latest/api/common/index/NgSwitchCase-directive.html https://angular.io/docs/ts/latest/api/common/index/NgSwitch-directive.html

不角2支持在ngSwitchCase||操作?

回答

18

如果评估'd' || 'e' || 'f'结果是'd'options'd',那么它不匹配。您不能以这种方式使用ngSwitchCase

这会工作:

<ng-container [ngSwitch]="true"> 
     <ng-container *ngSwitchCase="options === 'a'">Code A</ng-container> 
     <ng-container *ngSwitchCase="options === 'b'">Code B</ng-container> 
     <ng-container *ngSwitchCase="options === 'c'">Code C</ng-container> 
     <ng-container *ngSwitchCase="options === 'd' || options === 'e' || options === 'f'">Common Code</ng-container> 
     <ng-container *ngSwitchDefault>Code Default</ng-container> 
    </ng-container> 
+2

哇!你是'Angular God':D我没有想到'[ngSwitch]'应该有真实的状况。 ;)谢谢你的出路。我挠了几个小时的头。 – PaladiN

+1

谢谢,不客气。很高兴听到它可以解决你的问题:) –

+3

工程!关键点:[ngSwitch] =“true”将允许评估所有的“SwitchCase条件”标签 – ObjectiveTC