Angular 2
Optimera rendering med ChangeDetectionStrategy
Sök…
Standard vs OnPush
Tänk på följande komponent med en inmatad myInput och ett internt värde som heter someInternalValue . Båda används i en komponents mall.
import {Component, Input} from '@angular/core';
@Component({
template:`
<div>
<p>{{myInput}}</p>
<p>{{someInternalValue}}</p>
</div>
`
})
class MyComponent {
@Input() myInput: any;
someInternalValue: any;
// ...
}
Som standard changeDetection: egenskapen changeDetection: i komponentdekoratören att ställas in till ChangeDetectionStrategy.Default ; implicit i exemplet. I den här situationen kommer eventuella ändringar av någon av värdena i mallen att utlösa en återgivning av MyComponent . Med andra ord, om jag ändrar myInput eller someInternalValue vinkel 2 att utöva energi och återge komponenten.
Anta dock att vi bara vill återge när ingångarna ändras. Tänk på följande komponent med changeDetection: ställ in på ChangeDetectionStrategy.OnPush
import {Component, ChangeDetectionStrategy, Input} from '@angular/core';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush
template:`
<div>
<p>{{myInput}}</p>
<p>{{someInternalValue}}</p>
</div>
`
})
class MyComponent {
@Input() myInput: any;
someInternalValue: any;
// ...
}
Genom att ställa changeDetection: till ChangeDetectionStrategy.OnPush kommer MyComponent endast att återges när dess ingångar ändras. I det här fallet kommer myInput att behöva få ett nytt värde från sin överordnade för att utlösa en återgivning.