Anguler2 - 未处理的承诺拒绝:没有ViewContainerRef的提供者! (在动态模板中)

时间:2016-12-22 07:50:17

标签: angular

我正在尝试实现动态组件。 我的要求是,我有三个类 - LayoutComponent,MenuService和DynamicService。 LayoutComponent用于调用MenuService的方法执行一些基本操作,执行操作后,MenuService的方法再次调用DynamicService的方法来创建动态组件。

这是我的Plunker,其中包含以下错误

Unhandled Promise rejection: No provider for ViewContainerRef! ;

2 个答案:

答案 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);
    }