这可能是我自己对 Angular 2 更改检测如何工作的误解,但我原以为如果组件ChangeDetectionStrategy
设置为或Checked
,则该组件只会在组件实例化时检查更改一次。它似乎不会以这种方式发生。CheckOnce
Detached
import {Component, OnInit, ChangeDetectionStrategy} from 'angular2/core'
@Component({
selector: 'my-app',
providers: [],
template: `
<div>
<button
(click)="onClick($event)"
[class.thing]="hasThingClass()">Update</button>
</div>
`,
changeDetection:ChangeDetectionStrategy.CheckOnce,
styles: [`
.thing { background-color: red }
`]
})
export class App implements OnInit {
public hasThing:Boolean = false;
onClick() {
this.hasThing = !this.hasThing;
}
hasThingClass(e) {
return this.hasThing;
}
}
单击时,我本来希望切换hasThing
属性,但我不希望视图会更新。碰巧的是,视图确实会更新。ChangeDetectionStrategy
设置为Detached
也时发生。
http://plnkr.co/edit/2hHdt2BDpj419Z32iPjJ?p=preview
我在这里想念什么?究竟是什么导致视图更新?从我所见,无论我更新hasThing
属性,视图都会在单击时更新,无论值是否已更改。