angular - ApplicationRef.tick 与 setTimeout
问题描述
我必须在我的角度应用程序中遇到这种情况
... // change @input of a component
setTimeout(() => { // wait for the component to process the change
... // do stuff
});
tick
现在我注意到,如果我使用以下函数,我可以获得相同的结果ApplicationRef
this.appRef.tick();
这看起来是一种更好(更有棱角)的方式。
所以我的问题是这两种解决方案总是会产生相同的结果。因为如果是这样,我会说这setTimeout
更容易,因为您不必将 ApplicationRef 注入构造函数。
解决方案
这是不一样的:
setTimeout(()=> {});
只是模拟一个 Angular 选择的异步事件来对当前组件执行变更检测。您可以认为它与ChangeDetectorRef的使用相同
_changeDetectorRef.detectChanges()
而你的
this.appRef.tick();
将检查整个应用程序和当前加载到视图树中的所有组件,而不是您正在使用的单个组件。
我会说同时加载了许多组件的应用程序 setTimeout 应该比 appRef.tick 快,但我认为速度差异通常在毫秒内,如果不是更少的话。
除了这个差异之外,其他一切都保持不变
推荐阅读
- amazon-web-services - CDK中1个月后如何删除ES日志?
- javascript - 设置 minDate 以避免在 html 输入中选择开始日期之前的结束日期
- javascript - 使用 javascript 执行器想要使用 xpath 点击 weburl 选项卡?
- hive - 不知道hive日志目录?
- javascript - 关于 php 和 node.js 的问题及答案
- javascript - 为什么我的 href 在 Django Python 的 url 中生成 #?
- reactjs - 当我单击 React 中的提交按钮时如何重置表单
- javascript - 如何从 API 使用 url 和 key javascript 获取数据
- html - 如何防止表格数据显示在表格头部 - 多页,pdf导出。html css
- visual-studio-code - 使用附加调试时,VSCode 不会因未捕获或捕获的异常而中断