我对在Angular Material 2输入上调用错误匹配器函数的次数感到惊讶。请参阅此plunker的控制台输出:http://plnkr.co/edit/Bop4v4MtX2Wj6rVwv04P?p=preview
当页面加载时,在您触摸输入之前已经调用了myErrorStateMatcher
13次。每次单击输入时,该函数会被调用12次,而当它失去焦点时会再调用6次。
这很可能与Angular的变化检测机制有关,但我对它的了解有限。
我的问题i:是否可以减少对匹配器功能的调用次数?如果这是由于变化检测,我该如何减少检测次数?
答案 0 :(得分:1)
错误匹配器必须在每个更改检测周期运行,因为它可能与它所存在的表单控件无关(父表单提交,兄弟验证状态等)。出于这个原因,你应该尽量保持匹配器的简单和精益。
您可以更改您的组件以使用changeDetectionStrategy.OnPush
,这将显着减少通话。更好的是this open PR即将合并,并且应该限制每次互动1到2次的调用