Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2推送检测策略_Javascript_Angular - Fatal编程技术网

Javascript 角度2推送检测策略

Javascript 角度2推送检测策略,javascript,angular,Javascript,Angular,我在理解角度推送检测策略方面有问题。 当我执行一些异步操作(比如从TS打开覆盖,这样就不会导致使用OnPush策略在组件上检测更改),然后单击任意位置,或调用其他检测事件(不在我的组件上),它会更改(覆盖打开)。 为什么会这样? 我在一个页面上有太多这样的组件(当我有15-20个单元时,性能会变得非常糟糕),所以我需要禁用检测,我该怎么做? 我尝试使用detach()方法,但在我的组件上发生简单事件后仍需要更改。这全面解释了onPush: 当@输入更改或触发事件时,它会触发 听起来您想手动分离

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

这全面解释了onPush:

@输入更改或触发事件时,它会触发

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

constructor(private cd: ChangeDetectorRef){}

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

  // do stuff

  this.cd.reattach();
}
如果分离而从不重新连接,则是,UI中不会反映任何更改。 如果您需要执行繁重的任务并需要停止更改检测,您还必须使用
resattach()


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

这全面解释了onPush:

@输入更改或触发事件时,它会触发

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

constructor(private cd: ChangeDetectorRef){}

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

  // do stuff

  this.cd.reattach();
}
如果分离而从不重新连接,则是,UI中不会反映任何更改。 如果您需要执行繁重的任务并需要停止更改检测,您还必须使用
resattach()


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

欢迎使用堆栈溢出!请阅读并在你的问题中添加一些你努力的代码。谢谢欢迎来到堆栈溢出!请阅读并在你的问题中添加一些你努力的代码。谢谢非常感谢你的回答!但是如何更改组件结构呢?我有一个大而重的角度应用程序,每个事件dom都会重新计算,所以当我在一个页面上有更多组件时,它的工作速度会变慢:(与代码无关,因为我将其加速到了最大程度,为此阅读了大量指南。我不知道您的项目看起来如何,但有太多的方法可以减少组件数量并提高速度。例如,使用
的内容投影可以简化许多组件,但这确实是针对cas的e、 答案是否符合您的预期?是的,非常感谢!了解它的工作原理,因此我需要分离此组件上的更改,因为我需要它们并且无法减少它们的数量。非常感谢您的回答!但是我如何更改组件结构?我有一个大而重的角度应用程序,每个事件dom都会重新计算,因此它的工作速度较慢当页面上有更多组件时:(与代码无关,因为我将其加速到了最大程度,为此阅读了大量指南。我不知道您的项目看起来如何,但有太多的方法可以减少组件数量并提高速度。例如,使用
的内容投影可以简化许多组件,但这确实是针对cas的e、 答案是否符合您的预期?是的,非常感谢!了解它的工作原理,因此我需要分离此组件上的更改,因为我需要它们并且无法减少它们的数量。