我在angular@4.1.3
面临一个奇怪的问题。在我们的大型应用程序中,我们必须使一些组件可自定义,即允许用户在主页上动态添加和删除它们。这些组件在根目录导入的NgModule中声明,并且今天正常工作(没有动态加载)。
然后我开始使用ngComponentOutlet
指令,但我发现这些组件无法动态构建,原因是:
Can't resolve all parameters for XXXComponent: ([object Object], ?, [object Object], ?, [object Object], ?)
缺少参数的真正奇怪的是App根模块中提供的服务,甚至更奇怪的是,我实际上可以通过Injector
中的HomePageComponent
来解决这些问题:
// This works!
const foo = this.injector.get(ProfileService);
ComponentFactoryResolver也是如此:
// This yield the same error as above...
const widgetComponent = this.componentFactoryResolver.resolveComponentFactory(XXXComponent);
我的猜测这与儿童注射器有关,但我不明白为什么似乎没有考虑根部注射器...
有什么想法吗?