Javascript 从模板调用函数时的角度变化检测

Javascript 从模板调用函数时的角度变化检测,javascript,angular,angular-changedetection,Javascript,Angular,Angular Changedetection,我刚刚从一个模板调用了一个函数,在里面我只是返回true或false 检查上面链接项目的控制台,所以数组有7项,但在控制台中我可以看到两次日志。( 我已更新此问题和stackblitz链接) 我有图像,我希望错误img标签不应该存在,所以我从模板中调用了相同的函数两次 实现这种逻辑的正确方法是什么? 如果图像中有错误,我需要的是没有图像标签 请检查控制台日志 我没有改变任何财产——这里会发生什么 (我在搜索引擎搜索中尝试了不同的答案,但仍然没有得到准确的答案)。在angular中,变化检测由z

我刚刚从一个模板调用了一个函数,在里面我只是返回true或false

检查上面链接项目的控制台,所以数组有7项,但在控制台中我可以看到两次日志。( 我已更新此问题和stackblitz链接) 我有图像,我希望错误img标签不应该存在,所以我从模板中调用了相同的函数两次 实现这种逻辑的正确方法是什么? 如果图像中有错误,我需要的是没有图像标签

请检查控制台日志

我没有改变任何财产——这里会发生什么


(我在搜索引擎搜索中尝试了不同的答案,但仍然没有得到准确的答案)。

在angular中,变化检测由zone.js完成。计算出UI的哪些部分需要重新呈现

它将看到您的方法
checkimage
,因为它无法预测它将执行的方法的值。因此,您可以在控制台中获得多个日志

根据
checkimage
方法中的代码,它可能会导致性能问题。 经验法则:不要从模板调用函数

您可以简单地更改代码


ff{{i}
{{id.sr}}

ngDoCheck是由
angular
提供的
生命周期钩子
。此方法用于检测angular自身无法或不会检测到的更改并对其采取行动

此方法在ngOnInit之后运行一次,也在每个
更改检测周期之后运行

在开发模式中,angular最初运行额外的更改检测循环

在生产环境中,您只能在案例中看到一个日志


您到底想知道什么?作为一项基本规则,从模板调用函数不是一个好主意。是的,你能举个例子说明为什么从模板调用函数不是一件好事,有时它按我们预期的方式运行,有时运行次数超过预期。我已经更新了stack blitz链接中的代码,我最初尝试的是感谢您的回复。我已经更新了这个问题,请您检查一下,并提出解决方案,同时检查该链接中的最新代码。谢谢您的回复。我已经更新了这个问题,当我试图调用该图像的函数(错误)部分时,请检查并建议解决方案,同时检查该链接中的最新代码。@LogicBlower您的实际问题是什么?请打开代码并查看控制台,它将显示一个大约49的值,我只需要一个包含该代码的解决方案(来自模板的函数调用)不应该运行那么多次。希望这次你能理解我在寻找什么。