首先,我想说清楚,我想要的是组件的Angular Type实例,而不是该组件的TypeScript定义。
上下文如下:我在一个服务中,我在输入中接收一个组件的实例(HomeComponent
和指定的所有组件属性)。我还可以访问ViewContainerRef和TemplateRef。但是,我没有找到任何可以传递给resolveComponentFactory来获取对象的新实例的内容。
我试着:
component = *component instance*
componentFactoryResolver.resolveComponentFactory(component)
但是会抛出以下错误:
没有找到[object object]的组件工厂。你把它添加到@NgModule.entryComponents了吗?
显然组件是正确导入的(我有它的一个实例!)。
我尝试了不同的组合,结果相同,但我仍然无法得到Angular想要的Type
实例。
我先验地不知道可能的组件列表,所以我不能在服务中使用映射或导入它们。我怎样才能取得所需的实例?
我目前使用的是Angular5,所以我仍然需要ComponentFactoryResolver。
通过实验,我发现Angular
类型实例实际上是一个表示组件构造函数的字符串。
由于这个原因,它很简单:
componentFactoryResolver.resolveComponentFactory(component.constructor)