typescript - Poate ngClass să folosească operatorul ternar în Angular 2?
În Angular 1, codul de mai jos funcționează bine.
<div ng-class="$varA === $varB ? 'css-class-1' : 'css-class-2'">
Dar când încerc să fac un lucru similar în Angular 2, nu funcționează.
Am adăugat deja directives: [NgClass]
<div [ngClass]="varA === varB ? 'css-class-1' : 'css-class-2'">
Cum ar trebui să scriu în Angular 2, mulțumesc!
EDIT: A fost greșeala mea, am adăugat din greșeală { } la tot varA === varB ? 'css-class-1' : 'css-class-2'. Deci ngClass poate folosi în continuare operatorul ternar în Angular 2.
Răspuns #1
Da. Ceea ce ai scris funcționează:
<div [ngClass]="varA === varB ? 'css-class-1' : 'css-class-2'">
Plunker
Rezultatul expresiei din partea dreaptă trebuie să evalueze la unul dintre următoarele:
- un șir de nume de clase CSS separate prin spațiu (acesta este ceea ce returnează expresia ta)
- un șir de nume de clase CSS
- un obiect, cu numele claselor CSS ca chei și valori booleene
Poate ai avut o altă eroare în codul tău?
Răspunsul #2
<div [ngClass]="{'css-class-1':varA === varB, 'css-class-2': varA !== varB}">
Vezi de asemenea https://angular.io/api/common/NgClass
Răspunsul #3
Poți încerca următoarele.....
Pentru operatorul ternar folosește:
[ngClass]="condition1==condition2?'class-1':'class-2'"
Pentru mai multe condiții folosiți:
[ngClass]="{'class-1':condition1==condition2, 'class-2': condition3==condition4}"
mulțumesc...
