*ngIf d'autre si, dans le modèle

Comment aurais-je un cas multiples dans un *ngIf déclaration? Je suis habitué à Vue ou Angulaire 1 avec le fait d'avoir un if, else if, et else, mais il semble Angulaire 4 ne dispose que d'un true (if) et false (else) condition.

Selon la documentation, je ne peux le faire:

  <ng-container *ngIf="foo === 1; then first else second"></ng-container>
  <ng-template #first>First</ng-template>
  <ng-template #second>Second</ng-template>
  <ng-template #third>Third</ng-template>

Mais je veux avoir plusieurs conditions (quelque chose comme):

  <ng-container *ngIf="foo === 1; then first; foo === 2; then second else third"></ng-container>
  <ng-template #first>First</ng-template>
  <ng-template #second>Second</ng-template>
  <ng-template #third>Third</ng-template>

Mais je suis en terminant avoir à utiliser ngSwitch, qui se sent comme un hack:

  <ng-container [ngSwitch]="true">
    <div *ngSwitchCase="foo === 1">First</div>
    <div *ngSwitchCase="bar === 2">Second</div>
    <div *ngSwitchDefault>Third</div>
  </ng-container>

Alternativement, il semble que beaucoup de syntaxes j'ai utilisé pour Angulaires 1 et la Vue ne sont pas pris en charge dans Angulaire 4, alors quelle serait la méthode recommandée pour la structure de mon code avec des conditions comme ça?

  • Je pensais que vous hack est la meilleure solution car elle était la plus lisible. Cependant, j'ai réalisé que angulaires instructions de commutation de permettre plusieurs critères de correspondance si vous n'obtenez pas que la vraie elseif logique.