ViewContainerRef.parentInjector被弃用,有什么替代品?

4

我升级到Angular 7之后,我的代码中出现了parentInjector is deprecated: No replacement的提示。鉴于它已经被废弃,为什么没有可用的更新版本呢?或者是Angular团队忘记在文档中添加了这个信息?

我正在使用injector来动态添加组件到dom中。

const factory = this.cfr.resolveComponentFactory(modalClass);
const ref = factory.create(this.vcr.parentInjector);
1个回答

8
由于这明显是已废弃的,为什么没有可用的更新或者Angular团队只是忘记在文档中添加它?
这是一个API错误,应该是私有成员。依赖注入器没有分层结构。你无法从任何地方在Angular中的注入器中获取父注入器。
我正在使用注入器动态添加组件dom。
你应该使用“this.vcr.injector”代替。如果这个变化破坏了你的源代码,那么需要改变你的源代码。
GitHub问题:https://github.com/angular/angular/pull/25174 请求废弃API:https://github.com/angular/angular/pull/25092#discussion_r205181787

但是假设我需要为宿主组件而不是具有指令的组件(该组件位于宿主模板中)运行ChangeDectorRef#detectChanges。如果没有访问父注入器,我该怎么做呢? - LppEdd
好的,我可以自己回答。只需在指令构造函数中注入 ChangeDetectorRef 即可。 - LppEdd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接