Processo de detecção de alterações angulares repintar o dom

Estou aprendendo sobre o processo de detecção de alterações angulares e, verificando as ferramentas de desenvolvimento no meu Chrome, vejo um comportamento estranho.

Meu plnkr para demonstrar o comportamento:http://plnkr.co/edit/cTLF00nQdhVmkHYc8IOu

Eu tenho um componente simples com a exibição:

<li *ngFor="let item of list">{{item.name}}</li>

e construtor:

constructor() {
    this.list = [{name: 'Gustavo'}, {name: 'Costa'}]

para simular uma solicitação simples, adicionei:

// simulating request repaint the DOM
setInterval( () => {
  this.list = [{name: 'Gustavo'}, {name: 'Costa'}];
}, 2000);

Se você notou, a matrizlist recebe uma lista igual ao valor inicial. Vamos imaginar que quando o Angular verifica os valores exibidos no processo de detecção de alterações, temos um código como este:

if( oldName !== name )  { // ( 'Gustavo' !== 'Gustavo')
 // update the view
}

Mas os valores são os mesmos,por que angular REPINTAR O DOM a cada 2 segundos.?

Mas seMudo o objeto, o REPAINT não ocorre

// simulating request there is not repaint
setInterval( () => {
  this.list[0].name = "Gustavo"; // no repaint because it's the same value
  this.list[1].name = "Costa 2"; // repaint
}, 2000);

Você pode testar isso com o link plnkr acima.

questionAnswers(3)

yourAnswerToTheQuestion