I've been going through the guide on angular.io and came across the section 
on the NgClass directive 
<https://angular.io/docs/ts/latest/guide/template-syntax.html#!#ngClass>. 
In the example provided the ngClass' source is a component function:

<div [ngClass]="setClasses()">This div is saveable and special</div>


setClasses() {
  let classes =  {
    saveable: this.canSave,      // true
    modified: !this.isUnchanged, // false
    special: this.isSpecial,     // true
  };
  return classes;}


Does this not create a large overhead during the digest cycle considering 
the directive does not know when the result of the function has changed and 
would trigger a new evaluation of the function during each digest cycle? In 
contrast I'd expect the following code to provide the same functionality 
but to only re-evaluate specifically when one of the observed values have 
changed (canSave, isUnchanged, isSpecial). 

<div [ngClass]="{ saveable : canSave, modified : !isUnchanged, special: 
isSpecial }">This div is saveable and special</div>


Could someone shed some light on what I should take into account to 
optimize performance? An example use case would be to have this ngClass on 
an ngRepeat that creates ~200 elements on the visible page.

As a side node and smaller question I was wondering if there is any good 
resource to learn about one-time binding (in angular2 vs angular1). The 
guide does not appear to cover this and I was hoping to have an async one 
time bind available in angular2.

Best regards

-- 
You received this message because you are subscribed to the Google Groups 
"Angular" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to