J'essaie d'utiliser ngSwitch en tant que dans cet exemple mais j'obtiens une erreur:
Mon composant:
template: `
<div layout="column" layout-align="center center">
<div [ng-switch]="value">
<div *ng-switch-when="'init'">
<button md-raised-button class="md-raised md-primary">User</button>
<button md-raised-button class="md-raised md-primary">Non user</button>
</div>
<div *ng-switch-when="0">Second template</div>
<div *ng-switch-when="1">Third Template</div>
</div>
</div>`,
directives: [NgSwitch, NgSwitchWhen, NgSwitchDefault]
})
Mon plunker - wizard.ts
Qu'est-ce que j'ai raté? Merci
mettre à jour
Voir https://angular.io/api/common/NgSwitch
original
Les modèles sont sensibles à la casse (depuis beta.47 AFAIR). Les sélecteurs de directive (attribut) ont été changés en cas de chameau. Par exemple de ng-switch
à ngSwitch
.
Les noms de balises utilisent toujours des tirets pour assurer la compatibilité avec les composants Web. Par exemple <router-link>
, <ng-content>
.
Plus de détails à ngSwitchCase
<container-element [ngSwitch]="switch_expression"> <some-element *ngSwitchCase="match_expression_1">...</some-element> </container-element>
<container-element [ngSwitch]="switch_expression"> <some-element *ngSwitchCase="match_expression_1">...</some-element> <some-element *ngSwitchCase="match_expression_2">...</some-element> <some-other-element *ngSwitchCase="match_expression_3">...</some-other-element> <ng-container *ngSwitchCase="match_expression_3"> <!-- use a ng-container to group multiple root nodes --> <inner-element></inner-element> <inner-other-element></inner-other-element> </ng-container> <some-element *ngSwitchDefault>...</some-element> </container-element>
<container-element [ngSwitch]="switch_expression"> <some-element *ngSwitchCase="match_expression_1">...</some-element> <some-other-element *ngSwitchDefault>...</some-other-element> </container-element>
Trois choses à garder à l'esprit ngSwitch
, ngSwitchCase
et ngSwitchDefault
.
ngSwitch - définit le property value
de model
. Par exemple - viewMode
, qui est une propriété de votre composant.
ngSwitchCase - Définit le rendu lorsque le value
du property
défini dans ngSwitchChanges
. Par ex. quand viewMode = 'map'
ngSwitchDefault - Définit le rendu si le value
ne correspond pas. Par ex. quand viewMode=undefined
. La valeur par défaut sera rendered
.
Un autre point important est que nous devons définir le [ngSwitchCase]
dans un <template></template>
Élément HTML sinon cela ne fonctionnera pas. Angular
est automatiquement converti en un <div>
tag.
<div [ngSwitch]="'viewMode'">
<template [ngSwitchCase]="'map'" ngSwitchDefault>
Map View Content...
</template>
<template [ngSwitchCase]="'list'">
List View Content...
</template>
</div>
Bonne chance.
Il y a aussi * ngSwitchDefault que je n'ai pas vu dans la documentation sur le site. Comme son nom l'indique, cette option sera utilisée par défaut si elle ne correspond pas aux autres cas.
Ceci est principalement un heads-up si quelqu'un se heurte à cela.