gpt4 book ai didi

javascript - Angular 2 OnPush 检测策略

转载 作者:行者123 更新时间:2023-12-01 01:42:59 25 4
gpt4 key购买 nike

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

最佳答案

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

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

ChangeDetectorRef knows some methods which could be interesting

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

constructor(private cd: ChangeDetectorRef){}

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

// do stuff

this.cd.reattach();
}

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

重新启用它

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

关于javascript - Angular 2 OnPush 检测策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52243725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com