繁体   English   中英

Angular 2 OnPush检测策略

[英]Angular 2 OnPush detection strategy

我在了解Angular OnPush检测策略时遇到问题。 当我执行一些异步操作(例如从TS打开叠加,这样就不会导致使用OnPush策略在组件上进行检测更改),然后我单击任意位置或调用其他检测事件(不在我的组件上),则它会更改(覆盖打开)。 为什么会发生? 我在页面上有太多此类组件(当我有15-20个单元时,性能会变得很差),所以我需要禁用检测,我该怎么做? 我尝试使用detach()方法,但是我在组件上发生简单事件后仍需要更改。

这全面解释了onPush: https ://netbasal.com/a-comprehensive-guide-to-angular-onpush-change-detection-strategy-5bac493074a4

@Input更改或事件被触发时,它会触发。

ChangeDetectorRef知道一些有趣的方法

听起来您想手动分离并重新连接:

constructor(private cd: ChangeDetectorRef){}

public ngOnInit() {
  this.cd.detach();

  // do stuff

  this.cd.reattach();
}

如果您分离并且从不重新连接,是的,不会在用户界面中反映任何更改。 如果您需要执行繁重的任务并且需要停止更改检测,则还必须使用reattach()重新启用它

尽管听起来您也想重新思考组件结构,但是由于您想尽可能避免更改检测以避免UI错误,因此您想重新考虑一下组件结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM