O {{myArray}} agora é atualizado na visualização a partir da versão beta.16
A detecção de alterações foi alterada.
Antes da versão beta.16, se sua visualização contiver{{myArray}}
, essa ligação não será atualizada se você não modificar a referência da matriz. Por exemplo, se vocêpush()
itens na matriz, a exibição não será atualizada para mostrar o novo item. A explicação é (bem, foi) que, como a referência da matriz não mudou, a detecção angular de alterações não reavalia a ligação. estedesentupidor beta.15 demonstra esse comportamento.
A partir do beta.16 (e, portanto, do RC.1), as coisas são diferentes. o{{myArray}}
a ligação agora será atualizada mesmo que a referência da matriz não tenha sido alterada! Veja issoRC.1 plunker.
Eu olhei para oChangeLog para beta.16, e não vejo nada que possa explicar essa mudança de comportamento (mas talvez eu tenha perdido alguma coisa). Alguém sabe o que causou essa alteração e o que mais pode ser afetado?
Código do desentupidor:
@Component({
selector: 'child',
template: `<p>child: {{arr}}`
})
export class Child {
@Input() arr;
}
@Component({
selector: 'my-app',
template: `{{title}} <p>parent: {{arr}}
<button (click)="modifyArray()">modify array</button>
<child [arr]="arr"></child>`,
directives: [Child]
})
export class AppComponent {
title = "Angular 2 beta.15"; // or "Angular 2 RC.1", as appropriate
arr = 'one two three'.split(' ');
modifyArray() {
this.arr.push('another');
console.log(this.arr);
}
}