手动TypeScript角度依赖注入在ChangeDetectorRef上失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手动TypeScript角度依赖注入在ChangeDetectorRef上失败相关的知识,希望对你有一定的参考价值。

在我的Angular应用程序中,我已经为此blog中描述的TypeScript子类实现了手动依赖注入的方法。目标是消除必须将提供者注入子类只是为了将它们传递给父类。它当时运作良好。

不久之后,当我在第二个Angular模块中使用它时,它失败了。搜索发现前一个方法可能(应该?)在Angular 7中破坏(参见this question),但第一个用例继续起作用。

我把它缩小到一个特定的注射失败:ChangeDetectorRef(CDR)。如果我在try / catch中包含每个尝试的手动注入,那么在注入CDR之后,就像在构造函数中指定的那样。

CDR有什么不同或特殊的东西吗?我不能提供它,因为它来自Angular。有什么关于它必须绑在孩子班级?

最后,我想知道是否有某种方法可以使其与手动注射系统一起使用,或者是否必须保持每个儿童类的自动注射。

附录:

具体错误是

StaticInjectorError(AppModule)[ChildComponent -> ChangeDetectorRef]:
  StaticInjectorError(Platform: core)[ChildComponent -> ChangeDetectorRef]:
    NullInjectorError: No provider for ChangeDetectorRef!
答案

由于没有记录的原因,ChangeDetectorRef(以及ElementRefViewContainerRefTemplateRef)不能以这种方式手动注入。

https://github.com/angular/angular/issues/14656

ChangeDetectorRef必须继续注入儿童班并传递给super()

以上是关于手动TypeScript角度依赖注入在ChangeDetectorRef上失败的主要内容,如果未能解决你的问题,请参考以下文章

处理使用typescript在类实例化中反转@inject()参数

在 NestJS 中使用依赖注入导入 TypeScript 模块

Angular 指令依赖注入 - TypeScript

没有 TypeScript 的 Angular 8 依赖注入?

AngularJs + typescript 指令依赖注入

角度 6 依赖注入