我使用angular4并且有一个动态加载的组件。我想实现ChangeDetectionStrategy.OnPush策略,但即使我知道输入对象是全新的,它似乎也无法工作。我知道正常的变化检测不适用于动态加载的组件,但有没有办法以编程方式推送更改,以便ChangeDetectionStrategy.OnPush检测到更改?
答案 0 :(得分:2)
简单回答,不。
长答案(对不起,我的英语不太好),当您的组件在模板中使用时,@Input
的自动更改检测已连线。 Angular编译它并构建一个组件工厂,其中包含处理此更改检测的代码。
如果要使用动态组件,@Input
不再用于绑定其模板中的组件。
但是...... @Input
只是组件的公共属性,因此您仍然可以访问和修改它们。但变化检测无法检测到它。
我看到两个解决方案:
答案 1 :(得分:0)
没有angular4这样的东西。有角度,版本号https://angular.io/presskit。是的,有办法。如果要检测更改,请将ChangeDetectorRef
类的实例添加到组件并运行其detectChanges()
方法。通过阅读文档可以回答这个问题......