*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.
Vous devez vous connecter pour publier un commentaire.
Une autre alternative est de nid conditions
Vous pouvez simplement utiliser:
à moins que le gn-conteneur est important pour votre design, je suppose.
Voici un Plunker
if (index === 1) else if (foo === 2)
qui doivent être écritsif (index === 1) if (index !== 1 && foo === 2)
qui est un peu sale et plus sujettes à des erreurs, le plus de fois nous avons à écrire logique inverse.if (item === 'food' && kind === 'hamburger') {} else if (item === 'food' && kind === 'hotdog') {} else if (item === 'drink' && kind === 'beer') {} else if (item === 'drink' && kind === 'wine') {} else { /* could be poisonous */ }
NgTemplateOutlet
avec le contexte, par exemple: *ngTemplateOutlet="boire; le contexte: de la bière", ou peut-être un autre composant pour la catégorisation.Cela semble être la façon la plus propre à faire
dans le modèle:
Avis qu'il fonctionne comme un bon
else if
déclaration doit lorsque les conditions impliquer les différentes variables (1 seul cas est vrai à un moment). Certains des autres réponses ne fonctionne pas dans ce cas.de côté: gosh angulaire, c'est vraiment laid
else if
code du modèle...Vous pouvez utiliser plusieurs façon sur la base d'sitaution:
Si vous Variable est limitée à des Nombre ou Chaîne, le meilleur moyen est d'utiliser ngSwitch ou ngIf:
Ci-dessus ne convient pas pour les si elseif else des codes et des codes dynamiques, vous pouvez utiliser le code ci-dessous:
*ngIf="foo >= 7; then t7"
au lieu de... else t7
.