{{myArray}} wird jetzt in der Ansicht ab Beta 16 aktualisiert.

Die Änderungserkennung hat sich geändert.

Vor der Beta.16, wenn Ihre Ansicht @ enthä{{myArray}}, diese Bindung wird nicht aktualisiert, wenn Sie die Array-Referenz nicht ändern. Zum Beispiel, wenn Siepush()ei @ Elementen im Array wird die Ansicht nicht aktualisiert, um das neue Element anzuzeigen. Die Erklärung ist (naja), dass die Winkeländerungserkennung die Bindung nicht neu bewertet, da sich die Arrayreferenz nicht geändert hat. Dies beta.15 plunker demonstriert dieses Verhalten.

Als Beta.16 (und damit RC.1) liegen die Dinge anders. Das{{myArray}} binding wird jetzt aktualisiert, auch wenn sich die Array-Referenz nicht geändert hat! Sieh dir das an RC.1 Plunker.

Ich schaute auf dieChangeLog for beta.16, und ich sehe nichts, was diese Verhaltensänderung erklären könnte (aber vielleicht habe ich etwas verpasst). Weiß jemand, was diese Änderung verursacht hat und was sonst noch betroffen sein könnte?

Plunker-Code:

@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);
  }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage