我正在编写一个角度2的应用程序,我尝试在任何地方使用ChangeDetectionStrategy.OnPush,出于性能原因 . 我有一个复杂的组件,需要OnPush才能顺利工作,其中包含另一个显示表单的组件(使用FormBuilder创建) . 我现在注意到,当我点击一个滑块时,它的内部值会更新(即form.value),但滑块组件不会显示这个新值,即它会卡在旧位置 .
我解决这个问题的第一个想法是将叶子组件的变化检测策略设置为DEFAULT,但这没有效果,因为显然这也需要改变其父组件的变化检测策略(这在我的应用程序中是不可能的) .
然后我提出了这个想法:
@Component({
...
})
class MyComponent implements OnInit {
constructor(private zone: NgZone) {}
ngOnInit() {
INIT_FORM();
this.form.valueChanges
.subscribe(() => {
this.zone.run(() => {});
});
}
}
但它没有效果 .
是否有可能使角度2形式在使用OnPush的组件内工作?
1 回答
没有自己测试,但手动调用更改检测可能会做你想要的: