性能上の理由から、どこにでもChangeDetectionStrategy.OnPushを使用しようとする角度2のアプリケーションを作成しています。 FormBuilderで作成したフォームを表示している別のコンポーネントが含まれている、スムーズに動作するためには、OnPushを必要とする複雑なコンポーネントがあります。スライダをクリックすると、その内部値が更新されます(つまりform.value)が、スライダコンポーネントはこの新しい値を視覚化しない、つまり古い位置に固定されていることに気付きました。角度2のフォーム+ OnPush
これを修正する私の最初のアイデアは、リーフコンポーネントの変更検出戦略をDEFAULTに設定することでしたが、これは、親コンポーネントの変更検出戦略を変更する必要があるようには明らかに効果がありませんでした)。
は、その後、私はこのアイデアを思い付いた:
@Component({
...
})
class MyComponent implements OnInit {
constructor(private zone: NgZone) {}
ngOnInit() {
INIT_FORM();
this.form.valueChanges
.subscribe(() => {
this.zone.run(() => {});
});
}
}
が、それは効果がありません。
OnPushを使用するコンポーネントの内部で角度2のフォームを動作させる可能性はありますか?
あなたは確か '持っOnPush'されるコンポーネントによって使用される' @ Input'sの少なくとも一つのことを確認する必要があります関連する変更が発生するたびに新しい参照が表示されます。 'OnPush'を使うためのアプリケーション全体を作る上での良いガイドが見つかりました[ここ](https://vsavkin.com/managing-state-in-angular-2-applications-caf78d123d02#.1z6lg1hlu) – cvsguimaraes