我正在尝试实现动态组件。 我的要求是,我有三个类 - LayoutComponent,MenuService和DynamicService。 LayoutComponent用于调用MenuService的方法执行一些基本操作,执行操作后,MenuService的方法再次调用DynamicService的方法来创建动态组件。
这是我的Plunker,其中包含以下错误
Unhandled Promise rejection: No provider for ViewContainerRef! ;
答案 0 :(得分:31)
ViewContainerRef
只能注入组件或指令,而不能注入服务。
组件和指令获取它们自身附加的元素的ViewContainerRef
。任何视图都不附加服务。
您可以做的是将ViewContainerRef
和服务注入组件,然后在构造函数中将ViewContainerRef
传递给服务。注入此服务的每个服务或组件都可以访问它所拥有的ViewContainerRef
。
答案 1 :(得分:0)
就我而言,我正在使用ng2-toastr
,它引起了问题。
呼叫setRootViewContainerRef()
中的toastr
将解决您的问题。
constructor(dialogService: DialogService,
private toastr: ToastsManager,
private vcr: ViewContainerRef) {
super(dialogService);
this.toastr.setRootViewContainerRef(vcr);
}