变更检测已更改.
在测试版16之前,如果您的视图包含{{myArray}},则如果不修改数组引用,则不会更新该绑定.例如,如果将()项目推送到阵列上,则视图将不会更新以显示新项目.解释是(好吧,是)因为数组引用没有改变,Angular变化检测不会重新评估绑定.这beta.15 plunker演示了这种行为.
从beta.16(以及RC.1)开始,情况就不同了.即使数组引用未更改,{{myArray}}绑定现在也会更新!见RC.1 plunker.
我看了ChangeLog for beta.16,我没有看到任何可以解释这种行为变化的东西(但也许我错过了一些东西).有谁知道是什么导致了这种变化,还有什么可能会受到影响?
Plunker代码:
@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); } }