87 votes

Différence entre les liaisons [ngClass] et [class].

Quelle est la différence dans Angular 2 entre les extraits suivants :

<div [class.extra-sparkle]="isDelightful">
<div [ngClass]="{'extra-sparkle': isDelightful}">

0 votes

Il est intéressant de noter qu'il existe également une [className] qui peut être utilisé comme suit <div [className]="isDelightful ? 'extra-sparkle'"> .

2 votes

N'auriez-vous pas besoin de compléter le ternaire avec un : ? Sinon, l'utilisation de && à la place de ? sera valide.

0voto

Venkateswara Points 1

Oui, avec l'aide de la liaison de classe ([class]), nous pouvons également attacher plusieurs classes css avec les dernières versions. ex :[class]='{objet avec la clé comme nom de classe et la valeur comme true/false}' comme [ngClass]. Il n'y a donc aucune différence entre la liaison [class] et la directive [ngClass] intégrée.

0voto

arhacktect Points 273

Personne n'a mentionné que si on utilise les deux [class] et [ngClass] une certaine confusion peut se produire lorsque vous essayez de passer une chaîne de classe à [class] qui est "enregistré" par [ngClass] . Ils peuvent être compétitifs.

Par exemple, cela n'attribuera pas la valeur de la classe 'd-flex' à l'objet [class] à condition que [ngClass] la condition qui est associée à cette classe a une condition vraie

composant.html

<div [ngClass]="{'d-flex': falseCondition}" [class]="getClassBasedOnCondition()">

component.ts

public getClassBasedOnCondition(): string {
    return trueCondition ? 'd-flex' : '';
}

Vous pouvez utiliser [class.] au lieu de [ngClass] pour éviter un tel comportement tant que vous n'avez pas d'alliage de classes à cet endroit, par exemple [ngClass]="{'d-flex p-1': condition}"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X