Mettre à jour
Nous pouvons simplement créer une directive comme *ngIf
et l'appeler*ngVar
ng-var.directive.ts
@Directive({
selector: '[ngVar]',
})
export class VarDirective {
@Input()
set ngVar(context: any) {
this.context.$implicit = this.context.ngVar = context;
this.updateView();
}
context: any = {};
constructor(private vcRef: ViewContainerRef, private templateRef: TemplateRef<any>) {}
updateView() {
this.vcRef.clear();
this.vcRef.createEmbeddedView(this.templateRef, this.context);
}
}
avec cette *ngVar
directive, nous pouvons utiliser ce qui suit
<div *ngVar="false as variable">
<span>{{variable | json}}</span>
</div>
ou
<div *ngVar="false; let variable">
<span>{{variable | json}}</span>
</div>
ou
<div *ngVar="45 as variable">
<span>{{variable | json}}</span>
</div>
ou
<div *ngVar="{ x: 4 } as variable">
<span>{{variable | json}}</span>
</div>
Exemple de Plunker Angular4 ngVar
Voir également
Réponse originale
Angulaire v4
1) div
+ ngIf
+let
<div *ngIf="{ a: 1, b: 2 }; let variable">
<span>{{variable.a}}</span>
<span>{{variable.b}}</span>
</div>
2) div
+ ngIf
+as
vue
<div *ngIf="{ a: 1, b: 2, c: 3 + x } as variable">
<span>{{variable.a}}</span>
<span>{{variable.b}}</span>
<span>{{variable.c}}</span>
</div>
component.ts
export class AppComponent {
x = 5;
}
3) Si vous ne voulez pas créer de wrapper comme div
vous pouvez utiliserng-container
vue
<ng-container *ngIf="{ a: 1, b: 2, c: 3 + x } as variable">
<span>{{variable.a}}</span>
<span>{{variable.b}}</span>
<span>{{variable.c}}</span>
</ng-container>
Comme @Keith l'a mentionné dans les commentaires
cela fonctionnera dans la plupart des cas mais ce n'est pas une solution générale car elle repose sur la véracité de la variable
Voir la mise à jour pour une autre approche.