2017-05-04 18 views
7

Mam wiele instrukcji switch, ale w niektórych przypadkach potrzebuję wspólnego przypadku. Więc staram sięAngular 2 ngSwitchCase, operator OR nie działa

OR operator => ||

Przykład:

 <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> 

wyjściowa:

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

Oto przedostatni przypadek składa się z wielu spraw, a teraz domyślnie case 'd' działa tylko i nie działa dla case 'e' and 'f'.

Nie widzę żadnego wielokrotnego sprawę wewnątrz ngSwitchCase docs:

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

Nie kątowa 2 wspiera operatora w ngSwitchCase||?

Odpowiedz

18

Jeśli oceniać 'd' || 'e' || 'f' wynik jest 'd' i kiedy options nie jest 'd', to nie pasuje. W ten sposób nie można używać ngSwitchCase.

to będzie działać:

<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

Wow! jesteś 'Angular God": D Nie myślałem, że '[ngSwitch]' powinien mieć prawdziwy stan. ;) Dzięki za wyjście z tego. Odrapałem sobie głowę na wiele godzin. – PaladiN

+1

Dzięki, nie ma za co. Cieszę się, że to rozwiązało Twój problem :) –

+3

Działa! Kluczowy punkt: [ngSwitch] = "true" pozwoli na ocenę wszystkich tagów warunku "SwitchCase". – ObjectiveTC