Tentando descobrir por que OnPush
a estratégia de detecção de alterações não está funcionando nesta demonstração .
Se bem entendi, OnPush
a detecção de alterações deve ser acionada quando uma referência de propriedade é alterada. e para garantir isso, um novo array é definido sempre assim:
this.periodData$.subscribe((pd) => {
this.periodData = [...pd];
});
E o modelo que é renderizado periodData
fica assim:
<div *ngFor="let p of periodData">{{p}}</div>
O periodData
é alterado através do controle de seleção na demonstração.
Podemos ver que está mudando via log, porém o template não está atualizando. Se a detecção de alterações estiver definida como padrão, ela funcionará.
Pensamentos?
Use
ChangeDetectorRef
para acionar manualmente a detecção de alterações após a atualizaçãoperiodData
.Ah - OK - encontrei a resposta aqui . Resumidamente: