angularsingle-page-applicationangular2-directivesangular-ng-class

Difference between [ngClass] vs [class] binding


What is the difference in Angular 2 between the following snippets:

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

Solution

  • This is special Angular binding syntax

    <div [class.extra-sparkle]="isDelightful">
    

    This is part of the Angular compiler and you can't build a custom binding variant following this binding style. The only supported are [class.xxx]="...", [style.xxx]="...", and [attr.xxx]="..."

    ngClass is a normal Angular directive like you can build it yourself

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

    ngClass is more powerful. It allows you to bind a string of classes, an array of strings, or an object like in your example.