これは、Angular 2 の変更検出がどのように機能するかについての私自身の誤解かもしれませんが、コンポーネントが、またはChangeDetectionStrategyに設定されている場合、そのコンポーネントは、コンポーネントがインスタンス化されたときに一度だけ変更をチェックすることを期待していました。そのようには起こらないようです。CheckedCheckOnceDetached
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プロパティを更新するかどうかに関係なく、値が変更されたかどうかに関係なく、クリックするとビューが更新されます。