首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角2 OnPush检测策略

角2 OnPush检测策略
EN

Stack Overflow用户
提问于 2018-09-09 10:48:12
回答 1查看 260关注 0票数 0

我在理解角度OnPush检测策略方面有问题。当我执行一些异步操作(比如从TS中打开覆盖,这样就不会导致使用OnPush策略检测组件上的更改),然后我点击任何地方,或者调用其他检测事件(不是在我的组件上),它就会改变(覆盖打开)。为什么会发生这种事?我在一个页面上有太多这样的组件(当我有15-20个部件时,性能会变得非常糟糕),所以我需要禁用检测,我怎么能做到呢?我尝试使用detach()方法,但在组件上发生简单事件之后仍然需要进行更改。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-09 11:14:51

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

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

ChangeDetectorRef知道一些可能很有趣的方法

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

代码语言:javascript
运行
复制
constructor(private cd: ChangeDetectorRef){}

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

  // do stuff

  this.cd.reattach();
}

如果您分离和永远不重新附加,是的,没有变化将反映在UI中。如果您需要执行繁重的任务,并且需要进行更改检测才能停止,则还必须使用reattach()重新启用它。

尽管听起来您也想重新考虑组件结构,因为您希望尽可能少地处理更改检测,以避免UI错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52243725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档