手动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
(以及ElementRef
,ViewContainerRef
和TemplateRef
)不能以这种方式手动注入。
见https://github.com/angular/angular/issues/14656
ChangeDetectorRef
必须继续注入儿童班并传递给super()
。
以上是关于手动TypeScript角度依赖注入在ChangeDetectorRef上失败的主要内容,如果未能解决你的问题,请参考以下文章
处理使用typescript在类实例化中反转@inject()参数
在 NestJS 中使用依赖注入导入 TypeScript 模块