Angular 2
Optimización de la representación mediante ChangeDetectionStrategy
Buscar..
Predeterminado vs OnPush
Considere el siguiente componente con una entrada myInput y un valor interno llamado someInternalValue . Ambos se utilizan en la plantilla de un componente.
import {Component, Input} from '@angular/core';
@Component({
template:`
<div>
<p>{{myInput}}</p>
<p>{{someInternalValue}}</p>
</div>
`
})
class MyComponent {
@Input() myInput: any;
someInternalValue: any;
// ...
}
De forma predeterminada, la propiedad changeDetection: en el decorador de componentes se establecerá en ChangeDetectionStrategy.Default ; implícito en el ejemplo. En esta situación, cualquier cambio en cualquiera de los valores de la plantilla activará una nueva representación de MyComponent . En otras palabras, si cambio myInput o someInternalValue angular 2 ejercerá energía y volverá a generar el componente.
Sin embargo, supongamos que solo queremos volver a renderizar cuando cambian las entradas. Considere el siguiente componente con changeDetection: configurado en 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;
// ...
}
Al establecer changeDetection: to ChangeDetectionStrategy.OnPush , MyComponent solo se volverá a representar cuando cambien sus entradas. En este caso, myInput deberá recibir un nuevo valor de su padre para desencadenar una nueva representación.