我们有一个非常大的Angular 2/4应用程序,它使用反应形式,有数百个表单控件。
通过在大约200个表单控件组件中注入ChangeDetectorRef实例会产生很大的开销吗?
更改检测参考用法:
答案 0 :(得分:3)
由于需要在组件View对象周围创建ViewRef_
包装,因此会产生轻微的开销。 ChangeDetectorRef
本身只是ViewRef_
的一个实例。
以下是源代码的相关代码段,其中resolveDep
是Angular处理构造函数的依赖项时调用的函数:
function resolveDep(view, elDef, allowPrivateServices, depDef, notFoundValue) {
...
while (view) {
if (elDef) {
switch (tokenKey$$1) {
...
case ChangeDetectorRefTokenKey: {
var cdView = findCompView(view, elDef, allowPrivateServices);
return createChangeDetectorRef(cdView); <------ create a wrapper
}
export function createChangeDetectorRef(view: ViewData): ChangeDetectorRef {
return new ViewRef_(view);
}
阅读这些文章以了解有关基础View对象的更多信息: