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

What is the overhead of dependency injection in Angular?

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

仅仅在大约 200 个表单控件组件中注入一个 ChangeDetectorRef 实例是否有很大的开销?

更改检测参考用法:

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

由于需要围绕组件视图对象创建 ViewRef_ 包装器,因此会产生轻微的开销。 ChangeDetectorRef 本身只是 ViewRef_ 的一个实例。

这是来源的相关片段,其中 resolveDep 是在 Angular 处理构造函数的依赖项时调用的函数:

function resolveDep(view, elDef, allowPrivateServices, depDef, notFoundValue) {
    ...
    while (view) {
        if (elDef) {
            switch (tokenKey$) {
                ...
                case ChangeDetectorRefTokenKey: {
                    var cdView = findCompView(view, elDef, allowPrivateServices);
                    return createChangeDetectorRef(cdView); <------ create a wrapper
                }

export function createChangeDetectorRef(view: ViewData): ChangeDetectorRef {
  return new ViewRef_(view);
}

阅读这些文章以了解有关底层视图对象的更多信息: