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