Angular中依赖注入的开销是多少?

时间:2017-08-23 07:34:57

标签: angular dependency-injection angular2-changedetection

我们有一个非常大的Angular 2/4应用程序,它使用反应形式,有数百个表单控件。

通过在大约200个表单控件组件中注入ChangeDetectorRef实例会产生很大的开销吗?

更改检测参考用法:

https://angular.io/api/core/ChangeDetectorRef

1 个答案:

答案 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对象的更多信息: